diff -up mythtv-0.21/programs/mythbackend/housekeeper.h.mythfilldatabase-check-at-startup mythtv-0.21/programs/mythbackend/housekeeper.h
--- mythtv-0.21/programs/mythbackend/housekeeper.h.mythfilldatabase-check-at-startup	2007-06-04 05:55:43.000000000 +0300
+++ mythtv-0.21/programs/mythbackend/housekeeper.h	2008-03-15 12:59:02.000000000 +0200
@@ -27,7 +27,7 @@ class HouseKeeper
 
   private:
 
-    bool wantToRun(const QString &dbTag, int period, int minhour, int maxhour);
+    bool wantToRun(const QString &dbTag, int period, int minhour, int maxhour, bool exact = false);
     void updateLastrun(const QString &dbTag);
     QDateTime getLastRun(const QString &dbTag);
     void flushLogs();
diff -up mythtv-0.21/programs/mythbackend/housekeeper.cpp.mythfilldatabase-check-at-startup mythtv-0.21/programs/mythbackend/housekeeper.cpp
--- mythtv-0.21/programs/mythbackend/housekeeper.cpp.mythfilldatabase-check-at-startup	2007-12-11 16:56:01.000000000 +0200
+++ mythtv-0.21/programs/mythbackend/housekeeper.cpp	2008-03-15 12:59:02.000000000 +0200
@@ -47,7 +47,7 @@ HouseKeeper::~HouseKeeper()
 }
 
 bool HouseKeeper::wantToRun(const QString &dbTag, int period, int minhour,
-                            int maxhour)
+                            int maxhour, bool exact)
 {
     bool runOK = false;
     unsigned int oneday = 60 * 60 * 24;
@@ -88,7 +88,8 @@ bool HouseKeeper::wantToRun(const QStrin
                     ((hour >= minhour) && (hour <= maxhour)))
                 {
                     int minute = now.time().minute();
-                    if ((hour == maxhour && minute > 30) ||
+                    if (exact ||
+			(hour == maxhour && minute > 30) ||
                         ((random()%(((maxhour-hour)*12+(60-minute)/5 - 6) + 1)) == 0))
                         runOK = true;
                 }
@@ -147,6 +148,8 @@ void HouseKeeper::RunHouseKeeping(void)
 {
     int period, maxhr, minhr;
     QString dbTag;
+    bool initial = true;
+
     // wait a little for main server to come up and things to settle down
     sleep(10);
 
@@ -226,7 +229,7 @@ void HouseKeeper::RunHouseKeeping(void)
                             (lastRun.secsTo(now) > (3 * 60 * 60)))
                             runMythFill = true;
                     }
-                    else if (wantToRun("MythFillDB", period, minhr, maxhr))
+                    else if (wantToRun("MythFillDB", period, minhr, maxhr, initial))
                     {
                         runMythFill = true;
                     }
@@ -259,6 +262,9 @@ void HouseKeeper::RunHouseKeeping(void)
             updateLastrun(dbTag);
         }
 
+	// Initial housekeeping run completed
+	initial = false;
+
         sleep(300 + (random()%8));
     }
 } 
