Index: trunk/BNC/src/PPP/pppClient.cpp
===================================================================
--- trunk/BNC/src/PPP/pppClient.cpp	(revision 9598)
+++ trunk/BNC/src/PPP/pppClient.cpp	(revision 9600)
@@ -294,5 +294,6 @@
         }
       }
-      if ( satObs->isValid(tLC) && (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle) ) {
+      if ( satObs->isValid(tLC) &&
+          (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle) ) {
         ++iObs;
         BB[iObs][0] = satObs->xc()[0];
@@ -307,5 +308,7 @@
     }
     BB = BB.Rows(1,iObs+1);
-    bancroft(BB, xyzc);
+    if (bancroft(BB, xyzc) != success) {
+      return failure;
+    }
 
     xyzc[3] /= t_CST::c;
@@ -319,18 +322,15 @@
       const t_pppSatObs* satObs = obsVector.at(ii);
       if (satObs->isValid() &&
-          satObs->prn().system() == 'G' &&
           (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle) ) {
         ColumnVector rr = satObs->xc().Rows(1,3) - xyzc.Rows(1,3);
         double res = rr.NormFrobenius() - satObs->obsValue(tLC)
                    - (satObs->xc()[3] - xyzc[3]) * t_CST::c;
-        if (std::isnan(res) || fabs(res) > maxRes) {
-          std::isnan(res) ?
-          maxRes      = res :
-          maxRes      = fabs(res);
+        if (fabs(res) > maxRes) {
+          maxRes = fabs(res);
           maxResIndex = ii;
         }
       }
     }
-    if (!std::isnan(maxRes) && maxRes < BLUNDER) {
+    if (maxRes < BLUNDER) {
       if (print && _numEpoProcessing == 1) {
         LOG.setf(ios::fixed);
@@ -594,5 +594,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_pppClient::bancroft(const Matrix& BBpass, ColumnVector& pos) {
+t_irc t_pppClient::bancroft(const Matrix& BBpass, ColumnVector& pos) {
 
   if (pos.Nrows() != 4) {
@@ -662,4 +662,13 @@
     }
   }
+  if (pos.size() != 4 ||
+      std::isnan(pos(1)) ||
+      std::isnan(pos(2)) ||
+      std::isnan(pos(3)) ||
+      std::isnan(pos(4)))  {
+    return failure;
+  }
+
+  return success;
 }
 
Index: trunk/BNC/src/PPP/pppClient.h
===================================================================
--- trunk/BNC/src/PPP/pppClient.h	(revision 9598)
+++ trunk/BNC/src/PPP/pppClient.h	(revision 9600)
@@ -45,5 +45,5 @@
   const t_pppOptions* opt() const {return _opt;}
 
-  static void bancroft(const Matrix& BBpass, ColumnVector& pos);
+  static t_irc bancroft(const Matrix& BBpass, ColumnVector& pos);
 
   static t_pppClient* instance();
Index: trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP/pppFilter.cpp	(revision 9598)
+++ trunk/BNC/src/PPP/pppFilter.cpp	(revision 9600)
@@ -801,7 +801,5 @@
       t_irc irc = resetAmb(refPrnOld, allObs);
       if (OPT->_obsModelType == OPT->DCMcodeBias) {
-        if (irc == success) {
-          addNoiseToIono(sys);
-        }
+        if (irc == success) {addNoiseToIono(sys);}
       }
     }
Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9598)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9600)
@@ -142,5 +142,18 @@
   bool totOK  = false;
   ColumnVector satPosOld(6); satPosOld = 0.0;
-  t_lc::type tLC = isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1;
+  t_lc::type tLC = t_lc::dummy;
+  if (isValid(t_lc::cIF)) {
+    tLC = t_lc::cIF;
+  }
+  if (tLC == t_lc::dummy && isValid(t_lc::c1)) {
+      tLC = t_lc::c1;
+  }
+  if (tLC == t_lc::dummy && isValid(t_lc::c2)) {
+      tLC = t_lc::c2;
+  }
+  if (tLC == t_lc::dummy) {
+    _valid = false;
+    return;
+  }
   double prange = obsValue(tLC);
   for (int ii = 1; ii <= 10; ii++) {
