diff -Naur -X freevo_diff_exclude freevo-cvs/freevo_config.py freevo-new/freevo_config.py
--- freevo-cvs/freevo_config.py	2003-10-14 17:42:57.000000000 +0200
+++ freevo-new/freevo_config.py	2003-10-15 23:47:54.000000000 +0200
@@ -951,12 +959,16 @@
 # if using record_daemon from cron
 REC_SCHEDULE_FILE = '/tmp/freevo_record.lst'
 
-# if using the persitant record_server
+# if using the persitant recordserver
 RECORD_SCHEDULE = '%s/record_schedule.xml' % FREEVO_CACHEDIR
 
 RECORD_SERVER_IP = 'localhost'
 RECORD_SERVER_PORT = 18001
 
+# start every recording X minutes before scheduled,
+# and stop X minutes after scheduled
+RECORD_PADDING = 60 * 0 
+
 if os.uname()[0] == 'FreeBSD':
   # FreeBSD's bsdbt848 TV driver doesn't support audio settings?
   VCR_AUDIO = ''
diff -Naur -X freevo_diff_exclude freevo-cvs/src/helpers/recordserver.py freevo-new/src/helpers/recordserver.py
--- freevo-cvs/src/helpers/recordserver.py	2003-10-14 17:43:00.000000000 +0200
+++ freevo-new/src/helpers/recordserver.py	2003-10-15 23:19:23.000000000 +0200
@@ -188,6 +188,16 @@
         scheduledRecordings = self.getScheduledRecordings()
         scheduledRecordings.removeProgram(prog, tv.tv_util.getKey(prog))
         self.saveScheduledRecordings(scheduledRecordings)
+        now = time.time()
+        try:
+            recording = prog.isRecording
+        except:
+            recording = FALSE
+
+        # it would have been nice to know exactly what program was recording
+        if (prog.start - config.RECORD_PADDING) <= now \
+               and (prog.stop - config.RECORD_PADDING) >= now and recording:
+            plugin.getbyname('RECORD').Stop()
        
         return (TRUE, 'recording removed')
    
@@ -284,14 +294,16 @@
             except:
                 recording = FALSE
 
-            if prog.start <= now and prog.stop >= now and recording == FALSE:
+            if (prog.start - config.RECORD_PADDING) <= now \
+                   and (prog.stop + config.RECORD_PADDING) >= now \
+                   and recording == FALSE:
                 # just add to the 'we want to record this' list
                 # then end the loop, and figure out which has priority,
                 # remember to take into account the full length of the shows
                 # and how much they overlap, or chop one short
                 # yeah thats a good idea but make sure its not like 5 mins
 
-                duration = int(prog.stop - now - 10)
+                duration = int((prog.stop + config.RECORD_PADDING ) - now - 10)
                 if duration < 10:
                     return FALSE
 
@@ -304,7 +316,7 @@
 
         for prog in progs.values():
             # If the program is over remove the entry.
-            if prog.stop < now:
+            if ( prog.stop + config.RECORD_PADDING) < now:
                 if DEBUG: log.debug('found a program to clean')
                 cleaned = TRUE
                 del progs[tv.tv_util.getKey(prog)]
