Index: /trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppFilter.cpp	(revision 8964)
+++ /trunk/BNC/src/PPP/pppFilter.cpp	(revision 8965)
@@ -118,5 +118,5 @@
   // ----------------------------------------
   if ((OPT->_obsModelType == OPT->DCMcodeBias   ||
-       OPT->_obsModelType == OPT->DCMphaseBias) && (_numEpoProcessing == 1)) {
+       OPT->_obsModelType == OPT->DCMphaseBias) &&(_numEpoProcessing == 1))  {
     _numAllUsedLCs = 0;
     for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) {
@@ -125,19 +125,24 @@
       if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == false) {
         _numAllUsedLCs -= 1;  // GIM not used
-      }
-    }
-    int modify = 0;
-    if (OPT->_pseudoObsTropo) {
-      modify  = -1;
-    }
-    // max Obs
-    int maxObs = allObs.size() * (_numAllUsedLCs + modify);
-    if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == true) { // stecDiff w.r.t refSat
-      maxObs -= 1;
-    }
-    if (OPT->_pseudoObsTropo) {
-      maxObs += 1;  // once per station
-    }
-    _datumTrafo->initAA(maxObs, _parlist->nPar());
+        if (OPT->_pseudoObsTropo) { // if no VTEC values /pseudo obs iono then no pseudo obs tropo
+          _numAllUsedLCs -= 1;
+        }
+      }
+      int modifyLCs = 0;
+      if (OPT->_pseudoObsTropo &&
+          OPT->_pseudoObsIono && epoch->pseudoObsIono() == true) {
+        modifyLCs  = -1;
+      }
+      // max Obs
+      int maxObs = allObs.size() * (_numAllUsedLCs + modifyLCs);
+      if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == true) {
+        maxObs -= 1; // pseudo obs iono with respect to refSat
+      }
+      if (OPT->_pseudoObsIono && epoch->pseudoObsIono() == true &&
+          OPT->_pseudoObsTropo) {
+        maxObs += 1;   // pseudo obs tropo once per station
+      }
+      _datumTrafo->initAA(maxObs, _parlist->nPar());
+    }
   }
 
@@ -225,5 +230,4 @@
   // Detect Cycle Slips
   // ------------------
-
   if (detectCycleSlips(LCs, obsVector, refPrn, preProcessing) != success) {
     return failure;
@@ -231,7 +235,4 @@
 
   unsigned usedLCs = LCs.size();
-  if (OPT->_pseudoObsIono && !pseudoObsIonoAvailable) {
-    usedLCs -= 1;  // GIM not used
-  }
 
   ColumnVector               xSav       = _xFlt;
@@ -239,15 +240,25 @@
   string                     epoTimeStr = string(_epoTime);
   const vector<t_pppParam*>& params     = _parlist->params();
-  int modify = 0;
-  if (OPT->_pseudoObsTropo) {
-    modify  = -1;
+
+  if (OPT->_pseudoObsIono && !pseudoObsIonoAvailable) {
+    usedLCs -= 1;  // GIM not used
+    if (OPT->_pseudoObsTropo) { // if no VTEC values /pseudo obs iono then no pseudo obs tropo
+      usedLCs -= 1;
+    }
+  }
+
+  int modifyLCs = 0;
+  if (OPT->_pseudoObsTropo &&
+      OPT->_pseudoObsIono && pseudoObsIonoAvailable) {
+    modifyLCs  = -1;
   }
   // max Obs
-  unsigned maxObs = obsVector.size() * (usedLCs + modify);
-  if (OPT->_pseudoObsIono && pseudoObsIonoAvailable) { // stecDiff w.r.t refSat
-    maxObs -= 1;
-  }
-  if (OPT->_pseudoObsTropo) {
-    maxObs +=1;   // tropo pseudo obs once per station
+  unsigned maxObs = obsVector.size() * (usedLCs + modifyLCs);
+  if (OPT->_pseudoObsIono && pseudoObsIonoAvailable) {
+    maxObs -= 1; // pseudo obs iono with respect to refSat
+  }
+  if (OPT->_pseudoObsIono && pseudoObsIonoAvailable &&
+      OPT->_pseudoObsTropo) {
+    maxObs += 1;   // pseudo obs tropo once per station
   }
 
@@ -272,9 +283,10 @@
     for (unsigned ii = 0; ii < obsVector.size(); ii++) {
       t_pppSatObs* obs = obsVector[ii];
+      unsigned hlp = ii+1;
       if (!obs->outlier()) {
         for (unsigned jj = 0; jj < usedLCs; jj++) {
           const t_lc::type tLC = LCs[jj];
-          if (tLC == t_lc::GIM && obs->isReference()) {continue;}
-          if (tLC == t_lc::Tz0 && ii+1 != obsVector.size()) {continue;}
+          if (tLC == t_lc::GIM &&  obs->isReference()) {continue;}
+          if (tLC == t_lc::Tz0 && hlp != obsVector.size()) {continue;}
           ++iObs;
           usedObs.push_back(obs);
@@ -465,4 +477,5 @@
           double ll = obs->obsValue(tLC) - obs->cmpValue(tLC) - DotProduct(_x0, AA);
           double vv = DotProduct(AA, _xFlt) - ll;
+
           if (fabs(vv) > SLIP) {
             if (preProcessing) {
@@ -486,5 +499,5 @@
 t_irc t_pppFilter::resetAmb(t_prn prn, const vector<t_pppSatObs*>& obsVector,
                             SymmetricMatrix* QSav, ColumnVector* xSav) {
-                            
+
   t_irc irc = failure;
   vector<t_pppParam*>& params = _parlist->params();
Index: /trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 8964)
+++ /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 8965)
@@ -650,5 +650,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void  t_pppSatObs::setPseudoObsTropo() {qDebug() << "setPseudoObsTropo";
+void  t_pppSatObs::setPseudoObsTropo() {
   _tropo0 = _model._tropo0;
 }
