diff --git a/mythtv/programs/mythbackend/scheduler.cpp b/mythtv/programs/mythbackend/scheduler.cpp
index d6676b3..c7b9677 100644
--- a/mythtv/programs/mythbackend/scheduler.cpp
+++ b/mythtv/programs/mythbackend/scheduler.cpp
@@ -1785,7 +1785,7 @@ void Scheduler::run(void)
 
     QMutexLocker lockit(&schedLock);
 
-    int       prerollseconds  = 0;
+    int       prerollseconds  = gCoreContext->GetNumSetting("RecordPreRoll", 0);
     int       wakeThreshold   = 300;
     int       idleTimeoutSecs = 0;
     int       idleWaitForRecordingTime = 15; // in minutes
@@ -1806,7 +1806,10 @@ void Scheduler::run(void)
 
         QDateTime curtime = MythDate::current();
         int secs_to_next = (startIter != reclist.end()) ?
-            curtime.secsTo((*startIter)->GetRecordingStartTime()) : 60*60;
+            curtime.secsTo((*startIter)->GetRecordingStartTime()) - prerollseconds : 60*60;
+
+        if (secs_to_next < 1)
+            secs_to_next = 1;
 
         // If we're about to start a recording don't do any reschedules...
         // instead sleep for a bit
@@ -1975,7 +1978,7 @@ int Scheduler::CalcTimeToNextHandleRecordingEvent(
         if ((*i)->GetRecordingStatus() == (*i)->oldrecstatus)
             continue;
 
-        int secs_to_next = curtime.secsTo((*i)->GetRecordingStartTime());
+        int secs_to_next = curtime.secsTo((*i)->GetRecordingStartTime()) - prerollseconds;
 
         if ((*i)->GetRecordingStatus() == rsWillRecord &&
             !recPendingList[(*i)->MakeUniqueSchedulerKey()])
