Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 2050)
+++ trunk/BNC/bncpppclient.cpp	(revision 2051)
@@ -79,7 +79,59 @@
 void bncPPPclient::putNewObs(p_obs pp) {
   QMutexLocker locker(&_mutex);
+
+  static const double c1 =   t_CST::freq1 * t_CST::freq1 / 
+                 (t_CST::freq1 * t_CST::freq1 - t_CST::freq2 * t_CST::freq2);
   
+  static const double c2 = - t_CST::freq2 * t_CST::freq2 / 
+                 (t_CST::freq1 * t_CST::freq1 - t_CST::freq2 * t_CST::freq2);
+
   t_obsInternal* obs = &(pp->_o);
-  
+
+  t_satData* satData = new t_satData();
+
+  // Set Code Observations
+  // ---------------------  
+  if      (obs->P1) {
+    satData->P1         = obs->P1;
+    satData->codeTypeF1 = t_satData::P_CODE;
+  }
+  else if (obs->C1) {
+    satData->P1         = obs->C1;
+    satData->codeTypeF1 = t_satData::C_CODE;
+  }
+  else {
+    delete satData;
+    return;
+  }
+    
+  if      (obs->P2) {
+    satData->P2         = obs->P2;
+    satData->codeTypeF2 = t_satData::P_CODE;
+  }
+  else if (obs->C2) {
+    satData->P2         = obs->C2;
+    satData->codeTypeF2 = t_satData::C_CODE;
+  }
+  else {
+    delete satData;
+    return;
+  }
+
+  satData->P3 =  c1 * satData->P1 + c2 * satData->P2;
+
+  // Set Phase Observations
+  // ----------------------  
+  if (obs->L1 && obs->L2) {
+    satData->L1 = obs->L1 * t_CST::lambda1;
+    satData->L2 = obs->L2 * t_CST::lambda2;
+  }
+  else {
+    delete satData;
+    return;
+  }
+  satData->L3 =  c1 * satData->L1 + c2 * satData->L2;
+
+  // Add new Satellite to the epoch
+  // ------------------------------
   t_time tt(obs->GPSWeek, obs->GPSWeeks);
   
@@ -94,13 +146,4 @@
     _epoData->tt = tt;
   }
-  
-  t_satData* satData = new t_satData();
-      
-  satData->C1 = obs->C1;
-  satData->C2 = obs->C2;
-  satData->P1 = obs->P1;
-  satData->P2 = obs->P2;
-  satData->L1 = obs->L1;
-  satData->L2 = obs->L2;
 
   QString prn = 
@@ -207,8 +250,5 @@
 t_irc bncPPPclient::cmpToT(const QString& prn, t_satData* satData) {
 
-  double prange = satData->C1;
-  if (prange == 0.0) {
-    prange = satData->P1;
-  }
+  double prange = satData->P3;
   if (prange == 0.0) {
     return failure;
@@ -262,8 +302,10 @@
 
     cout << _epoData->tt.timestr(1) << " " << prn.toAscii().data() << "   "
+         << setw(14) << setprecision(3) << satData->P3             << "  "
+         << setw(14) << setprecision(3) << satData->L3             << "  "
          << setw(14) << setprecision(3) << satData->xx(1)          << "  "
          << setw(14) << setprecision(3) << satData->xx(2)          << "  "
          << setw(14) << setprecision(3) << satData->xx(3)          << "  "
-         << setw(12) << setprecision(3) << satData->clk;
+         << setw(12) << setprecision(6) << satData->clk / t_CST::c * 1.e6;
 
     if (satData->clkCorr) {
Index: trunk/BNC/bncpppclient.h
===================================================================
--- trunk/BNC/bncpppclient.h	(revision 2050)
+++ trunk/BNC/bncpppclient.h	(revision 2051)
@@ -39,10 +39,13 @@
 class t_satData {
  public:
-  double C1;
-  double C2;
-  double P1;
-  double P2;
-  double L1;
-  double L2;
+  enum codeType {P_CODE, C_CODE};
+  double       P1;
+  double       P2;
+  double       P3;
+  double       L1;
+  double       L2;
+  double       L3;
+  codeType     codeTypeF1;
+  codeType     codeTypeF2;
   ColumnVector xx;
   ColumnVector vv;
