Index: /trunk/BNC/src/PPP/pppClient.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppClient.cpp	(revision 9559)
+++ /trunk/BNC/src/PPP/pppClient.cpp	(revision 9560)
@@ -243,4 +243,31 @@
   return pseudoObsIono;
 }
+
+//
+//////////////////////////////////////////////////////////////////////////////
+void t_pppClient::useObsWithCodeBiasesOnly(std::vector<t_pppSatObs*>& obsVector) {
+
+  vector<t_pppSatObs*>::iterator it = obsVector.begin();
+  while (it != obsVector.end()) {
+    t_pppSatObs* pppSatObs = *it;
+    char sys = pppSatObs->prn().system();
+    bool codeBiasesAvailable = false;
+    t_frequency::type fType1 = t_lc::toFreq(sys,t_lc::c1);
+    t_frequency::type fType2 = t_lc::toFreq(sys,t_lc::c2);
+    if (pppSatObs->getCodeBias(fType1) &&
+        pppSatObs->getCodeBias(fType2)) {
+      codeBiasesAvailable = true;
+    }
+    if (codeBiasesAvailable) {
+      ++it;
+    }
+    else {
+      it = obsVector.erase(it);
+      delete pppSatObs;
+    }
+  }
+
+}
+
 
 // Compute the Bancroft position, check for blunders
@@ -637,9 +664,4 @@
       }
 
-      if (int(_obsRover.size()) < _opt->_minObs) {
-        LOG << "t_pppClient::processEpoch not enough observations" << endl;
-        return finish(failure,5);
-      }
-
       if (_opt->_refSatRequired) {
         if (handleRefSatellites(_obsRover) != success) {
@@ -651,4 +673,16 @@
           continue;
         }
+      }
+
+      // Check if obs have code biases
+      // -----------------------------
+      if (OPT->_obsModelType == OPT->DCMcodeBias ||
+          OPT->_obsModelType == OPT->DCMphaseBias) {
+        useObsWithCodeBiasesOnly(_obsRover);
+      }
+
+      if (int(_obsRover.size()) < _opt->_minObs) {
+        LOG << "t_pppClient::processEpoch not enough observations" << endl;
+        return finish(failure,5);
       }
 
Index: /trunk/BNC/src/PPP/pppClient.h
===================================================================
--- /trunk/BNC/src/PPP/pppClient.h	(revision 9559)
+++ /trunk/BNC/src/PPP/pppClient.h	(revision 9560)
@@ -57,4 +57,5 @@
                    std::vector<t_pppSatObs*>& obsVector, bncTime& epoTime);
   bool  preparePseudoObs(std::vector<t_pppSatObs*>& obsVector);
+  void  useObsWithCodeBiasesOnly(std::vector<t_pppSatObs*>& obsVector);
   t_irc cmpModel(t_pppStation* station, const ColumnVector& xyzc,
                  std::vector<t_pppSatObs*>& obsVector);
Index: /trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9559)
+++ /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9560)
@@ -65,5 +65,10 @@
   // Select pseudo-ranges and phase observations
   // -------------------------------------------
-  const string preferredAttrib = "G:12&W R:12&P E:1&CX E:5&QX C:26&I";
+  string preferredAttrib = "G:12&WCPSLX R:12&PC E:1&CBX E:5&QIX C:26&IQX";
+  if (OPT->_obsModelType == OPT->DCMcodeBias ||
+      OPT->_obsModelType == OPT->DCMphaseBias) {
+    // at the moment only one code or phase bias per system (G,E,C)/modulation considered,
+    preferredAttrib = "G:12&W R:12&PC E:1&CX E:5&QX C:26&I";
+  }
 
   for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
@@ -100,5 +105,5 @@
   }
 
-  // Find Glonass Channel Number
+  // Find GLONASS Channel Number
   // ---------------------------
   if (_prn.system() == 'R') {
@@ -444,5 +449,5 @@
       _model._antPCO[ii]  = PPP_CLIENT->antex()->rcvCorr(station->antName(), frqType, _model._eleSat, _model._azSat, found);
       _model._antPCO[ii] += PPP_CLIENT->antex()->satCorr(prn, frqType,  _model._elTx, _model._azTx, found);
-      if (OPT->_isAPC) {
+      if (OPT->_isAPC && found) {
         // the PCOs as given in the satellite antenna correction for all frequencies
         // have to be reduced by the PCO of the reference frequency
Index: /trunk/BNC/src/PPP/pppSatObs.h
===================================================================
--- /trunk/BNC/src/PPP/pppSatObs.h	(revision 9559)
+++ /trunk/BNC/src/PPP/pppSatObs.h	(revision 9560)
@@ -50,4 +50,5 @@
   void                setPseudoObsTropo();
   double              getIonoCodeDelay(t_frequency::type freq) {return _model._ionoCodeDelay[freq];}
+  double              getCodeBias(t_frequency::type freq) {return _model._codeBias[freq];}
 
   // RINEX
