Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 7252)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 7253)
@@ -61,5 +61,5 @@
   // Select pseudoranges and phase observations
   // ------------------------------------------
-  const string preferredAttrib = "CWPX_";
+  const string preferredAttrib = "CWPXI_";
 
   for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
@@ -396,9 +396,22 @@
   // -----------------
   const t_vTec* vTec = PPP_CLIENT->obsPool()->vTec();
-  if (vTec && (!isValid(t_lc::cIF) || !isValid(t_lc::lIF))) {
-    double stec = station->stec(vTec, _signalPropagationTime, rSat);
-    for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
-      t_frequency::type frqType = static_cast<t_frequency::type>(iFreq);
-      _model._ionoCodeDelay[iFreq] = 40.0 / pow(t_CST::freq(frqType, _channel), 2) * stec * 10.0e16;
+  bool vTecUsage = true;
+  for (unsigned ii = 0; ii < OPT->LCs(_prn.system()).size(); ii++) {
+    t_lc::type tLC = OPT->LCs(_prn.system())[ii];
+    if (tLC == t_lc::cIF || tLC == t_lc::lIF) {
+      vTecUsage = false;
+    }
+  }
+  if (vTecUsage) {
+    if (vTec) {
+      double stec = station->stec(vTec, _signalPropagationTime, rSat);
+      for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
+        t_frequency::type frqType = static_cast<t_frequency::type>(iFreq);
+        _model._ionoCodeDelay[iFreq] = 40.0 / pow(t_CST::freq(frqType, _channel), 2) * stec * 10.0e16;
+      }
+    }
+    else {
+      _model._set = false;
+      return failure;
     }
   }
@@ -420,4 +433,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void t_pppSatObs::printModel() const {
+
   LOG.setf(ios::fixed);
   LOG << "MODEL for Satellite " << _prn.toString() << endl
@@ -440,14 +454,12 @@
     }
   }
-  LOG << "OBS-CMP P3: " << _prn.toString() << " " 
-      << setw(12) << setprecision(3) << obsValue(t_lc::cIF) << " "
-      << setw(12) << setprecision(3) << cmpValue(t_lc::cIF) << " "
-      << setw(12) << setprecision(3) << obsValue(t_lc::cIF) - cmpValue(t_lc::cIF) << endl;
-
-  LOG << "OBS-CMP L3: " << _prn.toString() << " " 
-      << setw(12) << setprecision(3) << obsValue(t_lc::lIF) << " "
-      << setw(12) << setprecision(3) << cmpValue(t_lc::lIF) << " "
-      << setw(12) << setprecision(3) << obsValue(t_lc::lIF) - cmpValue(t_lc::lIF) << endl;
-
+  for (unsigned ii = 0; ii < OPT->LCs(_prn.system()).size(); ii++) {
+    t_lc::type tLC = OPT->LCs(_prn.system())[ii];
+    LOG << "OBS-CMP " << t_lc::toString(tLC) << ": " << _prn.toString() << " "
+        << setw(12) << setprecision(3) << obsValue(tLC) << " "
+        << setw(12) << setprecision(3) << cmpValue(tLC) << " "
+        << setw(12) << setprecision(3) << obsValue(tLC) - cmpValue(tLC) << endl;
+
+  }
   LOG << "OBS-CMP MW: " << _prn.toString() << " " 
       << setw(12) << setprecision(3) << obsValue(t_lc::MW) << " "
