Index: branches/BNC_2.12/src/combination/bnccomb.cpp
===================================================================
--- branches/BNC_2.12/src/combination/bnccomb.cpp	(revision 9267)
+++ branches/BNC_2.12/src/combination/bnccomb.cpp	(revision 9269)
@@ -429,5 +429,7 @@
       continue;
     }
-    else if (ephLast->checkState() != t_eph::ok) {
+    else if (ephLast->checkState() == t_eph::bad ||
+             ephLast->checkState() == t_eph::outdated ||
+             ephLast->checkState() == t_eph::unhealthy) {
       emit newMessage("bncComb: eph not ok for "  + prn.mid(0,3).toLatin1(), true);
       delete newCorr;
@@ -438,5 +440,6 @@
         newCorr->_eph = ephLast;
       }
-      else if (ephPrev && ephPrev->IOD() == newCorr->_iod) {
+      else if (ephPrev && ephPrev->checkState() == t_eph::ok &&
+               ephPrev->IOD() == newCorr->_iod) {
         newCorr->_eph = ephPrev;
         switchToLastEph(ephLast, newCorr);
@@ -722,6 +725,7 @@
       ColumnVector xc(6);
       ColumnVector vv(3);
-      eph->getCrd(_resTime, xc, vv, false);
-
+      if (eph->getCrd(_resTime, xc, vv, false) != success) {
+        continue;
+      }
       out << _resTime.datestr().c_str() << " "
           << _resTime.timestr().c_str() << " ";
@@ -774,5 +778,8 @@
     corr->_eph->setClkCorr(dynamic_cast<const t_clkCorr*>(&clkCorr));
     corr->_eph->setOrbCorr(dynamic_cast<const t_orbCorr*>(&orbCorr));
-    corr->_eph->getCrd(_resTime, xc, vv, true);
+    if (corr->_eph->getCrd(_resTime, xc, vv, true) != success) {
+      delete corr;
+      continue;
+    }
 
     // Correction Phase Center --> CoM
