Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 6030)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 6031)
@@ -474,5 +474,5 @@
 double t_pppSatObs::cmpValue(t_lc::type tLC) const {
 
-  if (!_validObs2 && t_lc::need2ndFreq(tLC)) {
+  if (!isValid(tLC)) {
     return 0.0;
   }
@@ -486,10 +486,26 @@
   // Add Dispersive Part
   // -------------------
-  double L1 = nonDisp + _model._antPco1 - _model._biasL1 + _model._windUp * t_CST::c / _f1;
-  double L2 = nonDisp + _model._antPco2 - _model._biasL2 + _model._windUp * t_CST::c / _f2;
-  double C1 = nonDisp + _model._antPco1 - _model._biasC1;
-  double C2 = nonDisp + _model._antPco2 - _model._biasC2;
-
-  return this->lc(tLC, L1, L2, C1, C2);
+  map<t_frequency::type, double> codeCoeff;
+  map<t_frequency::type, double> phaseCoeff;
+  lcCoeff(tLC, codeCoeff, phaseCoeff);
+
+  double dispPart = 0.0;
+
+  map<t_frequency::type, double>::const_iterator it;
+  for (it = codeCoeff.begin(); it != codeCoeff.end(); it++) {
+    t_frequency::type tFreq = it->first;
+    dispPart += it->second * (_model._antPCO[tFreq] + _model._codeBias[tFreq]);
+  }
+  for (it = phaseCoeff.begin(); it != phaseCoeff.end(); it++) {
+    t_frequency::type tFreq = it->first;
+    dispPart += it->second * (_model._antPCO[tFreq] + _model._phaseBias[tFreq]);
+  }
+
+//  double L1 = nonDisp + _model._antPco1 - _model._biasL1 + _model._windUp * t_CST::c / _f1;
+//  double L2 = nonDisp + _model._antPco2 - _model._biasL2 + _model._windUp * t_CST::c / _f2;
+//  double C1 = nonDisp + _model._antPco1 - _model._biasC1;
+//  double C2 = nonDisp + _model._antPco2 - _model._biasC2;
+
+    return nonDisp + dispPart;
 }
 
