Index: trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP/pppFilter.cpp	(revision 9420)
+++ trunk/BNC/src/PPP/pppFilter.cpp	(revision 9421)
@@ -133,7 +133,5 @@
     for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) {
       char sys = OPT->systems()[iSys];
-      if (OPT->_refSatRequired) {
-        _refPrn = (_obsPool->getRefSatMapElement(sys))->prn();
-      }
+      _refPrn = (_obsPool->getRefSatMapElement(sys))->prn();
      vector<t_pppSatObs*> obsVector;
       for (unsigned jj = 0; jj < allObs.size(); jj++) {
@@ -173,8 +171,12 @@
   // ------------------------------------
   preProcessing = false;
+  unsigned usableSys = 0;
   for (unsigned iSys = 0; iSys < OPT->systems().size(); iSys++) {
     char sys = OPT->systems()[iSys];
     if (OPT->_refSatRequired) {
       _refPrn = (_obsPool->getRefSatMapElement(sys))->prn();
+    }
+    else {
+      _refPrn.set(sys, 0);
     }
     unsigned int num = 0;
@@ -188,4 +190,11 @@
     if (!num) {
       continue;
+    }
+    else {
+      ++usableSys;
+      if (usableSys == 1 &&
+          OPT->_obsModelType == OPT->UncombPPP) {
+        _datumTrafo->setFirstSystem(sys);
+      }
     }
     LOG << epoTimeStr << " SATNUM " << sys << ' ' << right << setw(2) << num << endl;
@@ -296,11 +305,13 @@
     // ================
     if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) {
+      bool _pseudoObsTropoConsidered = false;
       for (unsigned ii = 0; ii < obsVector.size(); ii++) {
+        if (_pseudoObsTropoConsidered) {break;}
         t_pppSatObs* obs = obsVector[ii];
-        if (!obs->isReference()) {continue;}
         for (unsigned jj = 0; jj < usedLCs; jj++) {
           const t_lc::type tLC = LCs[jj];
           if (tLC != t_lc::Tz0) {continue;}
           ++iObs;
+          _pseudoObsTropoConsidered = true;
           usedObs.push_back(obs);
           usedTypes.push_back(tLC);
@@ -779,11 +790,13 @@
     // ================
     if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) {
+      bool pseudoObsTropoConsidered = false;
       for (unsigned ii = 0; ii < obsVector.size(); ii++) {
+        if (pseudoObsTropoConsidered) {break;}
         t_pppSatObs* obs = obsVector[ii];
-        if (!obs->isReference()) {continue;}
         for (unsigned jj = 0; jj < usedLCs; jj++) {
           const t_lc::type tLC = LCs[jj];
           if (tLC != t_lc::Tz0) {continue;}
           ++iObs;
+          pseudoObsTropoConsidered = true;
           for (unsigned iPar = 0; iPar < params.size(); iPar++) {
             const t_pppParam* par = params[iPar];
