Index: trunk/BNC/src/PPP_SSR_I/pppClient.cpp
===================================================================
--- trunk/BNC/src/PPP_SSR_I/pppClient.cpp	(revision 7028)
+++ trunk/BNC/src/PPP_SSR_I/pppClient.cpp	(revision 7029)
@@ -59,4 +59,9 @@
   _log     = new ostringstream();
   _ephUser = new bncEphUser(false);
+
+  for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
+    _satCodeBiases[ii] = 0;
+  }
+
 }
 
@@ -64,4 +69,9 @@
 ////////////////////////////////////////////////////////////////////////////
 t_pppClient::~t_pppClient() {
+
+  for (unsigned ii = 0; ii <= t_prn::MAXPRN; ii++) {
+    delete _satCodeBiases[ii];
+  }
+
   delete _filter;
   delete _epoData;
@@ -80,5 +90,6 @@
   for (unsigned ii = 0; ii < satObs.size(); ii++) {
     const t_satObs* obs     = satObs[ii]; 
-    t_satData*      satData = new t_satData();
+    t_prn prn = obs->_prn;
+    t_satData*   satData = new t_satData();
 
     if (_epoData->tt.undef()) {
@@ -87,5 +98,5 @@
 
     satData->tt       = obs->_time;
-    satData->prn      = QString(obs->_prn.toInternalString().c_str());
+    satData->prn      = QString(prn.toInternalString().c_str());
     satData->slipFlag = false;
     satData->P1       = 0.0;
@@ -99,24 +110,34 @@
     for (unsigned ifrq = 0; ifrq < obs->_obs.size(); ifrq++) {
       t_frqObs* frqObs = obs->_obs[ifrq];
+      double cb = 0.0;
+      const t_satCodeBias* satCB = satCodeBias(prn);
+      if (satCB && satCB->_bias.size()) {
+        for (unsigned ii = 0; ii < satCB->_bias.size(); ii++) {
+          const t_frqCodeBias& bias = satCB->_bias[ii];
+          if (frqObs && frqObs->_rnxType2ch == bias._rnxType2ch) {
+            cb  = bias._value;
+          }
+        }
+      }
       if      (frqObs->_rnxType2ch[0] == '1') {
-        if (frqObs->_codeValid)  satData->P1       = frqObs->_code;
+        if (frqObs->_codeValid)  satData->P1       = frqObs->_code + cb;
         if (frqObs->_phaseValid) satData->L1       = frqObs->_phase;
         if (frqObs->_slip)       satData->slipFlag = true;
       }
       else if (frqObs->_rnxType2ch[0] == '2') {
-        if (frqObs->_codeValid)  satData->P2       = frqObs->_code;
+        if (frqObs->_codeValid)  satData->P2       = frqObs->_code + cb;
         if (frqObs->_phaseValid) satData->L2       = frqObs->_phase;
         if (frqObs->_slip)       satData->slipFlag = true;
       }
       else if (frqObs->_rnxType2ch[0] == '5') {
-        if (frqObs->_codeValid)  satData->P5       = frqObs->_code;
+        if (frqObs->_codeValid)  satData->P5       = frqObs->_code + cb;
         if (frqObs->_phaseValid) satData->L5       = frqObs->_phase;
         if (frqObs->_slip)       satData->slipFlag = true;
       }
       else if (frqObs->_rnxType2ch[0] == '7') {
-              if (frqObs->_codeValid)  satData->P7       = frqObs->_code;
-              if (frqObs->_phaseValid) satData->L7       = frqObs->_phase;
-              if (frqObs->_slip)       satData->slipFlag = true;
-            }
+        if (frqObs->_codeValid)  satData->P7       = frqObs->_code + cb;
+        if (frqObs->_phaseValid) satData->L7       = frqObs->_phase;
+        if (frqObs->_slip)       satData->slipFlag = true;
+      }
     }
     putNewObs(satData);
@@ -311,5 +332,8 @@
 // 
 //////////////////////////////////////////////////////////////////////////////
-void t_pppClient::putCodeBiases(const std::vector<t_satCodeBias*>& /* satCodeBias */) {
+void t_pppClient::putCodeBiases(const std::vector<t_satCodeBias*>& satCodeBias) {
+  for (unsigned ii = 0; ii < satCodeBias.size(); ii++) {
+    putCodeBias(new t_satCodeBias(*satCodeBias[ii]));
+  }
 }
 
@@ -385,2 +409,7 @@
 }
 
+void t_pppClient::putCodeBias(t_satCodeBias* satCodeBias) {
+  int iPrn = satCodeBias->_prn.toInt();
+  delete _satCodeBiases[iPrn];
+  _satCodeBiases[iPrn] = satCodeBias;
+}
Index: trunk/BNC/src/PPP_SSR_I/pppClient.h
===================================================================
--- trunk/BNC/src/PPP_SSR_I/pppClient.h	(revision 7028)
+++ trunk/BNC/src/PPP_SSR_I/pppClient.h	(revision 7029)
@@ -49,5 +49,8 @@
   std::ostringstream& log() {return *_log;}
   const t_pppOptions* opt() const {return _opt;}
-
+  void putCodeBias(t_satCodeBias* satCodeBias);
+  const t_satCodeBias* satCodeBias(const t_prn& prn) const {
+    return _satCodeBiases[prn.toInt()];
+  }
  private:
   t_irc getSatPos(const bncTime& tt, const QString& prn, ColumnVector& xc, ColumnVector& vv);
@@ -55,4 +58,5 @@
   t_irc cmpToT(t_satData* satData);
 
+  t_satCodeBias*       _satCodeBiases[t_prn::MAXPRN+1];
   bncEphUser*         _ephUser;
   t_pppOptions*       _opt;
