diff --git a/Tests/scheduler/3x30s_Red.esq b/Tests/scheduler/3x30s_Red.esq
new file mode 100644
--- /dev/null
+++ b/Tests/scheduler/3x30s_Red.esq
@@ -0,0 +1,49 @@
+
+
+Jasem Mutlaq
+CCD Simulator
+CCD Simulator
+4
+0
+60
+0.1
+
+30
+
+1
+1
+
+
+0
+0
+1280
+1024
+
+-15
+Red
+Light
+
+
+1
+1
+1
+
+3
+0
+/var/tmp/kstars_tests
+0
+0
+
+
+
+
+Manual
+
+
+Manual
+
+False
+False
+
+
+
diff --git a/Tests/scheduler/repeating_scheduler_job_no_twilight_30s_leadtime.esl b/Tests/scheduler/repeating_scheduler_job_no_twilight_30s_leadtime.esl
new file mode 100644
--- /dev/null
+++ b/Tests/scheduler/repeating_scheduler_job_no_twilight_30s_leadtime.esl
@@ -0,0 +1,32 @@
+
+
+Default
+
+Kocab
+12
+
+14
+74
+
+/tmp/kstars_tests/3x30s_Red.esq
+
+ASAP
+
+
+MinimumAltitude
+
+
+Repeat
+
+
+Track
+
+
+
+UnparkMount
+
+
+WarmCCD
+ParkMount
+
+
diff --git a/kstars/ekos/scheduler/scheduler.cpp b/kstars/ekos/scheduler/scheduler.cpp
--- a/kstars/ekos/scheduler/scheduler.cpp
+++ b/kstars/ekos/scheduler/scheduler.cpp
@@ -1438,7 +1438,8 @@
job->getName(), job->getStartupTime().toString(job->getDateTimeDisplayFormat()), passedUp.toHMSString()));
job->setState(SchedulerJob::JOB_INVALID);
}
- else
+ /* Don't abort a job that is repeating because it started long ago, that delay is expected */
+ else if (job->getRepeatsRequired() <= 1)
{
appendLogText(i18n("Job '%1' startup time was %2, and is already passed by %3, marking aborted.",
job->getName(), job->getStartupTime().toString(job->getDateTimeDisplayFormat()), passedUp.toHMSString()));