Index: libs/libmythtv/siscan.cpp
===================================================================
--- libs/libmythtv/siscan.cpp	(revision 9812)
+++ libs/libmythtv/siscan.cpp	(working copy)
@@ -223,7 +223,10 @@
     // Add pmts to list, so we can do MPEG scan properly.
     ScanStreamData *sd = GetDTVSignalMonitor()->GetScanStreamData();
     for (uint i = 0; i < pat->ProgramCount(); i++)
-        sd->AddListeningPID(pat->ProgramPID(i));
+    {
+        if (pat->ProgramPID(i)) // don't add NIT "program", MPEG/ATSC safe.
+            sd->AddListeningPID(pat->ProgramPID(i));
+    }
 }
 
 void SIScan::HandleVCT(uint, const VirtualChannelTable*)
@@ -361,7 +364,7 @@
                                   bool wait_until_complete)
 {
     const DVBStreamData &dsd = (const DVBStreamData &)(*sd);
-    if (wait_until_complete && !dsd.HasCachedSDT())
+    if (wait_until_complete && !dsd.HasCachedSDT() && !dsd.HasCachedAllNIT())
         return;
 
     emit ServiceScanUpdateText(tr("Updating Services"));
