diff --git a/programs/mythbackend/housekeeper.cpp b/programs/mythbackend/housekeeper.cpp
index 952e909..ba3b5f0 100644
--- a/programs/mythbackend/housekeeper.cpp
+++ b/programs/mythbackend/housekeeper.cpp
@@ -247,6 +247,7 @@ void HouseKeeper::RunHouseKeeping(void)
             if (wantToRun("DailyCleanup", 1, 0, 24)) {
                 JobQueue::CleanupOldJobsInQueue();
                 CleanupAllOldInUsePrograms();
+                CleanupOldLivetvChains();
                 CleanupRecordedTables();
                 CleanupProgramListings();
                 updateLastrun("DailyCleanup");
@@ -353,6 +354,39 @@ void HouseKeeper::CleanupAllOldInUsePrograms(void)
     query.exec();
 }
 
+void HouseKeeper::CleanupOldLivetvChains(void)
+{
+    QDateTime fourHoursAgo = QDateTime::currentDateTime().addSecs(-4 * 60 * 60);
+    MSqlQuery query(MSqlQuery::InitCon());
+    MSqlQuery deleteQuery(MSqlQuery::InitCon());
+
+    // Keep these tvchains, they may be in use.
+    query.prepare("SELECT DISTINCT chainid FROM tvchain "
+                  "WHERE endtime > :FOURHOURSAGO ;");
+    query.bindValue(":FOURHOURSAGO", fourHoursAgo);
+
+    if (!query.exec() || !query.isActive())
+    {
+        MythContext::DBError("HouseKeeper Cleaning TVChain Table", query);
+        return;
+    }
+
+    QString keepChains = "";
+    while (query.next())
+        keepChains += "'" + query.value(0).toString() + "',";
+ 
+    if (keepChains.isEmpty())
+        deleteQuery.prepare("TRUNCATE TABLE tvchain;");
+    else
+    {
+        keepChains = keepChains.left(keepChains.length() - 1);
+        deleteQuery.prepare("DELETE FROM tvchain "
+                            "WHERE chainid NOT IN ( :KEEPERS );");
+        deleteQuery.bindValue(":KEEPERS", keepChains);
+    }
+    deleteQuery.exec();
+}
+
 void HouseKeeper::CleanupRecordedTables(void)
 {
     MSqlQuery query(MSqlQuery::InitCon());
diff --git a/programs/mythbackend/housekeeper.h b/programs/mythbackend/housekeeper.h
index a90889a..3863439 100644
--- a/programs/mythbackend/housekeeper.h
+++ b/programs/mythbackend/housekeeper.h
@@ -34,6 +34,7 @@ class HouseKeeper
     void runFillDatabase();
     void CleanupMyOldRecordings(void);
     void CleanupAllOldInUsePrograms(void);
+    void CleanupOldLivetvChains(void);
     void CleanupRecordedTables(void);
     void CleanupProgramListings(void);
     void RunStartupTasks(void);
