Index: libs/libmythtv/siscan.cpp
===================================================================
--- libs/libmythtv/siscan.cpp	(revision 10424)
+++ libs/libmythtv/siscan.cpp	(working copy)
@@ -376,7 +376,7 @@
                                   bool wait_until_complete)
 {
     const DVBStreamData &dsd = (const DVBStreamData &)(*sd);
-    if (wait_until_complete && !dsd.HasCachedSDT() && !dsd.HasCachedAllNIT())
+    if (wait_until_complete && (!dsd.HasCachedSDT() || !dsd.HasCachedAllNIT()))
         return;
 
     emit ServiceScanUpdateText(tr("Updating Services"));
@@ -621,6 +621,7 @@
     {
         // always wait for rotor to finish
         GetDVBSignalMonitor()->AddFlags(kDVBSigMon_WaitForPos);
+        GetDVBSignalMonitor()->SetRotorTarget(1.0f);
 
         if (item.mplexid > 0)
         {
@@ -1261,7 +1262,7 @@
         }
 
         // See if service already in database based on service ID
-        int chanid = ChannelUtil::GetChanID(db_mplexid, -1, 0, 0,
+        int chanid = ChannelUtil::GetChanID(db_mplexid, -1, -1, -1,
                                             sdt->ServiceID(i));
 
         if (chanid < 0)
