Index: trunk/BNC/bncmodel.cpp
===================================================================
--- trunk/BNC/bncmodel.cpp	(revision 2582)
+++ trunk/BNC/bncmodel.cpp	(revision 2583)
@@ -309,5 +309,5 @@
 // Computed Value
 ////////////////////////////////////////////////////////////////////////////
-double bncModel::cmpValue(t_satData* satData) {
+double bncModel::cmpValue(t_satData* satData, bool phase) {
 
   ColumnVector xRec(3);
@@ -330,5 +330,10 @@
                      trp() / sin(satData->eleSat);
 
-  return satData->rho + clk() - satData->clk + tropDelay;
+  double wind = 0.0;
+  if (phase) {
+    wind = windUp(satData->prn, satData->xx, xRec) * satData->lambda3;
+  }
+
+  return satData->rho + clk() - satData->clk + tropDelay + wind;
 }
 
@@ -467,5 +472,5 @@
         bncParam* par = new bncParam(bncParam::AMB_L3, _params.size()+1, prn);
         _params.push_back(par);
-        par->xx = satData->L3 - cmpValue(satData);
+        par->xx = satData->L3 - cmpValue(satData, true);
       }
     }
@@ -487,5 +492,5 @@
         bncParam* par = new bncParam(bncParam::AMB_L3, _params.size()+1, prn);
         _params.push_back(par);
-        par->xx = satData->L3 - cmpValue(satData);
+        par->xx = satData->L3 - cmpValue(satData, true);
       }
     }
@@ -595,7 +600,5 @@
       t_satData* satData = itGPS.value();
     
-      double rhoCmp = cmpValue(satData);
-    
-      ll(iObs)      = satData->P3 - rhoCmp;
+      ll(iObs)      = satData->P3 - cmpValue(satData, false);
       PP(iObs,iObs) = 1.0 / (sig_P3 * sig_P3);
       for (int iPar = 1; iPar <= _params.size(); iPar++) {
@@ -605,5 +608,5 @@
       if (_usePhase) {
         ++iObs;
-        ll(iObs)      = satData->L3 - rhoCmp;
+        ll(iObs)      = satData->L3 - cmpValue(satData, true);
         PP(iObs,iObs) = 1.0 / (sig_L3_GPS * sig_L3_GPS);
         for (int iPar = 1; iPar <= _params.size(); iPar++) {
@@ -627,8 +630,5 @@
         t_satData* satData = itGlo.value();
 
-        double rhoCmp = cmpValue(satData);
-        
-        ll(iObs)      = satData->L3 - rhoCmp;
-
+        ll(iObs)      = satData->L3 - cmpValue(satData, true);
         PP(iObs,iObs) = 1.0 / (sig_L3_GLO * sig_L3_GLO);
         for (int iPar = 1; iPar <= _params.size(); iPar++) {
Index: trunk/BNC/bncmodel.h
===================================================================
--- trunk/BNC/bncmodel.h	(revision 2582)
+++ trunk/BNC/bncmodel.h	(revision 2583)
@@ -79,5 +79,5 @@
 
  private:
-  double cmpValue(t_satData* satData);
+  double cmpValue(t_satData* satData, bool phase);
   double delay_saast(double Ele);
   void   predict(t_epoData* epoData);
Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 2582)
+++ trunk/BNC/bncpppclient.cpp	(revision 2583)
@@ -219,4 +219,8 @@
   satData->L3 =  c1 * satData->L1 + c2 * satData->L2;
 
+  // Set Ionosphere-Free Wavelength
+  // ------------------------------
+  satData->lambda3 = c1 * t_CST::c / f1 + c2 * t_CST::c / f2;
+
   // Add new Satellite to the epoch
   // ------------------------------
Index: trunk/BNC/bncpppclient.h
===================================================================
--- trunk/BNC/bncpppclient.h	(revision 2582)
+++ trunk/BNC/bncpppclient.h	(revision 2583)
@@ -56,4 +56,5 @@
   double       rho;
   bool         slipFlag;
+  double       lambda3;
 };
 
