Index: programs/mythbackend/housekeeper.h
===================================================================
--- programs/mythbackend/housekeeper.h	(revision 11622)
+++ programs/mythbackend/housekeeper.h	(working copy)
@@ -35,6 +35,7 @@
     void CleanupMyOldRecordings(void);
     void CleanupAllOldInUsePrograms(void);
     void CleanupRecordedTables(void);
+    void CleanupProgramListings(void);
     bool threadrunning;
     bool filldbRunning;
     bool isMaster;
Index: programs/mythbackend/housekeeper.cpp
===================================================================
--- programs/mythbackend/housekeeper.cpp	(revision 11622)
+++ programs/mythbackend/housekeeper.cpp	(working copy)
@@ -18,6 +18,8 @@
 #include "libmyth/mythdbcon.h"
 #include "libmyth/util.h"
 
+#include "programdata.h"
+
 static bool HouseKeeper_filldb_running = false;
 
 HouseKeeper::HouseKeeper(bool runthread, bool master)
@@ -225,6 +227,7 @@
                 JobQueue::CleanupOldJobsInQueue();
                 CleanupAllOldInUsePrograms();
                 CleanupRecordedTables();
+                CleanupProgramListings();
                 updateLastrun("DailyCleanup");
             }
         }
@@ -368,6 +371,20 @@
     }
 }
 
+void HouseKeeper::CleanupProgramListings(void)
+{
+    if (!gContext->GetNumSetting("MythFillEnabled", 0))
+    {
+        ProgramData *prog_data = new ProgramData;
+        // Keep 7 days of old listings.  Users wanting listings deleted
+        // "immediately" may set up mythfilldatabase to run without
+        // the "--no-delete" argument
+        prog_data->no_delete = true;
+        prog_data->clearOldDBEntries();
+        delete prog_data;
+    }
+}
+
 void *HouseKeeper::doHouseKeepingThread(void *param)
 {
     HouseKeeper *hkeeper = (HouseKeeper*)param;
