Index: trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP/pppFilter.cpp	(revision 10006)
+++ trunk/BNC/src/PPP/pppFilter.cpp	(revision 10008)
@@ -342,6 +342,7 @@
       for (unsigned iPar = 0; iPar < nPar; iPar++) {
         t_pppParam *hlp = params[iPar];
-        if (hlp->type() == t_pppParam::amb && hlp->prn() == obs->prn()
-            && hlp->tLC() == usedTypes[maxOutlierIndex]) {
+        if (hlp->type() == t_pppParam::amb &&
+            hlp->prn() == obs->prn() &&
+            hlp->tLC() == usedTypes[maxOutlierIndex]) {
           par = hlp;
         }
@@ -355,5 +356,5 @@
               << ' ' << setw(8) << setprecision(4) << maxOutlier << endl;
           break;
-        } //else {obs->setOutlier(); }
+        } //else {obs->setOutlier();}
       } else {    // fin-processing
         LOG << epoTimeStr << " Outlier " << t_lc::toString(maxOutlierLC) << ' '
@@ -364,5 +365,5 @@
               OPT->_obsModelType == OPT->DCMcodeBias ||
               OPT->_obsModelType == OPT->DCMphaseBias) {
-            resetAmb(par->prn(), obsVector, &QSav, &xSav);
+            resetAmb(par->prn(), obsVector, maxOutlierLC, &QSav, &xSav);
           }
           else {
@@ -456,5 +457,5 @@
             _obsPool->setRefSatChangeRequired(sys, true);
           } else {
-            resetAmb(obs->prn(), obsVector);
+            resetAmb(obs->prn(), obsVector, tLC);
           }
         }
@@ -477,5 +478,5 @@
               _obsPool->setRefSatChangeRequired(sys, true);
             } else {
-              resetAmb(obs->prn(), obsVector);
+              resetAmb(obs->prn(), obsVector, tLC);
             }
           }
@@ -490,5 +491,5 @@
 ////////////////////////////////////////////////////////////////////////////
 t_irc t_pppFilter::resetAmb(t_prn prn, const vector<t_pppSatObs*> &obsVector,
-    SymmetricMatrix *QSav, ColumnVector *xSav) {
+    t_lc::type lc, SymmetricMatrix *QSav, ColumnVector *xSav) {
 
   t_irc irc = failure;
@@ -499,4 +500,5 @@
       int ind = par->indexNew();
       t_lc::type tLC = par->tLC();
+      if (tLC != lc) {continue;}
       LOG << string(_epoTime) << " RESET " << par->toString() << endl;
       delete par;
@@ -688,8 +690,6 @@
   // reset old and set new refSats in last epoch (ambiguities/GIM)
   // =============================================================
-  if (resetRefSatellitesLastEpoch(allObs, refSatMap, refSatMapLastEpoch)
-      != true) {
-    LOG << "datumTransformation: resetRefSatellitesLastEpoch != success"
-        << endl;
+  if (resetRefSatellitesLastEpoch(allObs, refSatMap, refSatMapLastEpoch) != true) {
+    LOG << "datumTransformation: resetRefSatellitesLastEpoch != success"  << endl;
     return failure;
   }
@@ -767,6 +767,5 @@
     LOG << "AA.SubMatrix(1 .. " << iObs+1 << " , 1 .. " <<  nPar << ")" << endl;
 #endif
-    if (_datumTrafo->prepareAA(AA.SubMatrix(1, iObs + 1, 1, nPar), 2)
-        != success) {
+    if (_datumTrafo->prepareAA(AA.SubMatrix(1, iObs + 1, 1, nPar), 2)  != success) {
       return failure;
     }
@@ -776,14 +775,8 @@
   // Datum Transformation
   // ====================
-#ifdef BNC_DEBUG_PPP
-  //LOG << "AA1\n"; _datumTrafo->printMatrix(_datumTrafo->AA1(), _datumTrafo->numObs(), _datumTrafo->numPar());
-  //LOG << "AA2\n"; _datumTrafo->printMatrix(_datumTrafo->AA2(), _datumTrafo->numObs(), _datumTrafo->numPar());
-#endif
   if (_datumTrafo->computeTrafoMatrix() != success) {
     return failure;
   }
-#ifdef BNC_DEBUG_PPP
-  //LOG << "D21" << endl; _datumTrafo->printMatrix(_datumTrafo->D21(), _datumTrafo->numObs(), _datumTrafo->numPar());
-#endif
+
   ColumnVector xFltOld = _xFlt;
   SymmetricMatrix QFltOld = _QFlt;
@@ -801,27 +794,19 @@
   for (int iSys = 0; iSys < usedSystems.size(); iSys++) {
     char sys = usedSystems[iSys];
+    vector<t_lc::type> LCs = OPT->LCs(sys);
+    unsigned usedLCs = LCs.size();
+    if (OPT->_pseudoObsIono && !pseudoObsIono) {
+      usedLCs -= 1;  // GIM not used
+    }
     t_prn refPrnOld = refSatMapLastEpoch[sys]->prn();
     t_prn refPrnNew = refSatMap[sys]->prn();
     if (refPrnNew != refPrnOld) {
-      resetAmb(refPrnOld, allObs);/*
-      if (resetAmb(refPrnOld, allObs) == success) {
-        if (OPT->_obsModelType == OPT->DCMcodeBias) {
-          addNoiseToPar(t_pppParam::ion, sys);
-        } else if (OPT->_obsModelType == OPT->DCMphaseBias) {
-          if        (sys == 'G') {
-            addNoiseToPar(t_pppParam::pBiasG1, sys);
-            addNoiseToPar(t_pppParam::pBiasG2, sys);
-          } else if (sys == 'R') {
-            addNoiseToPar(t_pppParam::pBiasR1, sys);
-            addNoiseToPar(t_pppParam::pBiasR2, sys);
-          } else if (sys == 'E') {
-            addNoiseToPar(t_pppParam::pBiasE1, sys);
-            addNoiseToPar(t_pppParam::pBiasE2, sys);
-          } else if (sys == 'C') {
-            addNoiseToPar(t_pppParam::pBiasC1, sys);
-            addNoiseToPar(t_pppParam::pBiasC2, sys);
-          }
-        }
-      }*/
+      for (unsigned jj = 0; jj < usedLCs; jj++) {
+        const t_lc::type tLC = LCs[jj];
+        if (tLC == t_lc::GIM) {
+          continue;
+        }
+        resetAmb(refPrnOld, allObs, tLC);
+      }
     }
   }
Index: trunk/BNC/src/PPP/pppFilter.h
===================================================================
--- trunk/BNC/src/PPP/pppFilter.h	(revision 10006)
+++ trunk/BNC/src/PPP/pppFilter.h	(revision 10008)
@@ -200,5 +200,5 @@
                          bool preProcessing);
 
-  t_irc resetAmb(t_prn prn, const std::vector<t_pppSatObs*>& obsVector,
+  t_irc resetAmb(t_prn prn, const std::vector<t_pppSatObs*>& obsVector, t_lc::type lc,
                  SymmetricMatrix* QSav = 0, ColumnVector* xSav = 0);
 
