Index: /trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppFilter.cpp	(revision 9531)
+++ /trunk/BNC/src/PPP/pppFilter.cpp	(revision 9532)
@@ -73,4 +73,8 @@
 
   const QMap<char, t_pppRefSat*>& refSatMap = epoch->refSatMap();
+
+  //LOG << "processEpoch: printParams before set" << endl;
+  //_parlist.printParams(_epoTime);
+
   //--
   // Set Parameters
@@ -82,6 +86,6 @@
       OPT->_obsModelType == OPT->DCMphaseBias) {
 #ifdef BNC_DEBUG_PPP
-  LOG << "processEpoch: printParams after set" << endl;
-  _parlist.printParams(_epoTime);
+  //LOG << "processEpoch: printParams after set" << endl;
+  //_parlist.printParams(_epoTime);
 #endif
   }
@@ -118,4 +122,5 @@
         _xFlt = xFltOld;
         _QFlt = QFltOld;
+        _obsPool->deleteLastEpoch();
         restoreState(2);
         return failure;
@@ -712,4 +717,6 @@
     return success;
   }
+//  LOG << "datumTransformation: printParams before set" << endl;
+//  _parlist.printParams(_epoTime);
 
   // set AA2
@@ -720,6 +727,6 @@
 
 #ifdef BNC_DEBUG_PPP
-  LOG << "datumTransformation: printParams after set" << endl;
-  _parlist.printParams(_epoTime);
+ // LOG << "datumTransformation: printParams after set" << endl;
+//  _parlist.printParams(_epoTime);
 #endif
 
@@ -809,6 +816,6 @@
   // ====================
 #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());
+//      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) {
Index: /trunk/BNC/src/PPP/pppParlist.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppParlist.cpp	(revision 9531)
+++ /trunk/BNC/src/PPP/pppParlist.cpp	(revision 9532)
@@ -480,4 +480,22 @@
   }
 
+  // check which systems have observations
+  // -------------------------------------
+  _usedSystems.clear();
+  for (unsigned jj = 0; jj < obsVector.size(); jj++) {
+    const t_pppSatObs* satObs = obsVector[jj];
+    char sys = satObs->prn().system();LOG << satObs->prn().toString() << endl;
+    if (!_usedSystems.contains(sys)) {
+      _usedSystems.append(sys);
+    }
+  }
+
+  if (_usedSystems.size() > 1 &&
+      !_usedSystems.contains('G')) { // required to setup ISB w. r. t. GPS
+    return failure;
+  }
+
+
+
   // Check whether parameters have observations
   // ------------------------------------------
@@ -515,10 +533,37 @@
       if ((par->type() == t_pppParam::amb) &&
           (!par->lastObsTime().valid() || (epoTime - par->lastObsTime() > 0.0))) {
-#ifdef BNC_DEBUG_PPP
         LOG << "remove1 " << par->toString() << std::endl;
-#endif
         lostSats.append(par->prn());
         delete par;
         it = _params.erase(it);
+      }
+      // Check if systems have to be presented per biases
+      else if ((par->type() == t_pppParam::cBiasG1 ||
+                par->type() == t_pppParam::cBiasG2 ||
+                par->type() == t_pppParam::pBiasG1 ||
+                par->type() == t_pppParam::pBiasG2) && !usedSystems().contains('G')) {
+        delete par; LOG << "remove1 " << par->toString() << std::endl;
+       it = _params.erase(it);
+      }
+      else if ((par->type() == t_pppParam::cBiasR1 ||
+                par->type() == t_pppParam::cBiasR2 ||
+                par->type() == t_pppParam::pBiasR1 ||
+                par->type() == t_pppParam::pBiasR2) && !usedSystems().contains('R')) {
+        delete par; LOG << "remove1 " << par->toString() << std::endl;
+       it = _params.erase(it);
+      }
+      else if ((par->type() == t_pppParam::cBiasE1 ||
+                par->type() == t_pppParam::cBiasE2 ||
+                par->type() == t_pppParam::pBiasE1 ||
+                par->type() == t_pppParam::pBiasE2) && !usedSystems().contains('E')) {
+        delete par; LOG << "remove1 " << par->toString() << std::endl;
+       it = _params.erase(it);
+      }
+      else if ((par->type() == t_pppParam::cBiasC1 ||
+                par->type() == t_pppParam::cBiasC2 ||
+                par->type() == t_pppParam::pBiasC1 ||
+                par->type() == t_pppParam::pBiasG2) && !usedSystems().contains('C')) {
+        delete par; LOG << "remove1 " << par->toString() << std::endl;
+       it = _params.erase(it);
       }
       else {
@@ -533,7 +578,5 @@
       if ((par->type() == t_pppParam::ion) &&
           (lostSats.contains(par->prn()) || (epoTime - par->lastObsTime() > 0.0))) {
-    #ifdef BNC_DEBUG_PPP
         LOG << "remove1 " << par->toString() << std::endl;
-    #endif
         delete par;
         it = _params.erase(it);
@@ -545,19 +588,4 @@
   }
 
-  // check which systems have observations
-  // -------------------------------------
-  _usedSystems.clear();
-  for (unsigned jj = 0; jj < obsVector.size(); jj++) {
-    const t_pppSatObs* satObs = obsVector[jj];
-    char sys = satObs->prn().system();
-    if (!_usedSystems.contains(sys)) {
-      _usedSystems.append(sys);
-    }
-  }
-
-  if (_usedSystems.size() > 1 &&
-      !_usedSystems.contains('G')) { // required to setup ISB w. r. t. GPS
-    return failure;
-  }
 
   // Required Set of Parameters
