Index: /trunk/BNC/src/PPP/pppClient.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppClient.cpp	(revision 10022)
+++ /trunk/BNC/src/PPP/pppClient.cpp	(revision 10023)
@@ -73,7 +73,4 @@
   }
 
-  _offGlo = 0.0;
-  _offGal = 0.0;
-  _offBds = 0.0;
   CLIENTS.setLocalData(this);  // CLIENTS takes ownership over "this"
 }
@@ -357,165 +354,5 @@
   return success;
 }
-// Compute A Priori Glonass Receiver Clock Offset
-//////////////////////////////////////////////////////////////////////////////
-double t_pppClient::cmpOffGlo(vector<t_pppSatObs*>& obsVector) {
-
-  t_lc::type tLC   = t_lc::dummy;
-  double     offGlo = 0.0;
-
-  if (OPT->useSystem('R')) {
-
-    while (obsVector.size() > 0) {
-      offGlo = 0.0;
-      double   maxRes      = 0.0;
-      int      maxResIndex = -1;
-      t_prn    maxResPrn;
-      unsigned nObs        = 0;
-      for (unsigned ii = 0; ii < obsVector.size(); ii++) {
-        t_pppSatObs* satObs = obsVector.at(ii);
-        if (satObs->prn().system() == 'R') {
-          if (tLC == t_lc::dummy) {
-            tLC = satObs->isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1;
-          }
-          if (satObs->isValid(tLC) && (!satObs->modelSet() || satObs->eleSat() >= OPT->_minEle)) {
-            double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC);
-            ++nObs;
-            offGlo += ll;
-            if (fabs(ll) > fabs(maxRes)) {
-              maxRes      = ll;
-              maxResIndex = ii;
-              maxResPrn   = satObs->prn();
-            }
-          }
-        }
-      }
-
-      if (nObs > 0) {
-        offGlo = offGlo / nObs;
-      }
-      else {
-        offGlo = 0.0;
-      }
-
-      if (fabs(maxRes) > 1000.0) {
-        LOG << "t_pppClient::cmpOffGlo outlier " << maxResPrn.toString() << " " << maxRes << endl;
-        obsVector.erase(obsVector.begin() + maxResIndex);
-      }
-      else {
-        break;
-      }
-    }
-  }
-
-  return offGlo;
-}
-
-// Compute A Priori Galileo Receiver Clock Offset
-//////////////////////////////////////////////////////////////////////////////
-double t_pppClient::cmpOffGal(vector<t_pppSatObs*>& obsVector) {
-
-  t_lc::type tLC   = t_lc::dummy;
-  double     offGal = 0.0;
-
-  if (OPT->useSystem('E')) {
-
-    while (obsVector.size() > 0) {
-      offGal = 0.0;
-      double   maxRes      = 0.0;
-      int      maxResIndex = -1;
-      t_prn    maxResPrn;
-      unsigned nObs        = 0;
-      for (unsigned ii = 0; ii < obsVector.size(); ii++) {
-        t_pppSatObs* satObs = obsVector.at(ii);
-        if (satObs->prn().system() == 'E') {
-          if (tLC == t_lc::dummy) {
-            tLC = satObs->isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1;
-          }
-          if (satObs->isValid(tLC) && (!satObs->modelSet() || satObs->eleSat() >= OPT->_minEle)) {
-            double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC);
-            ++nObs;
-            offGal += ll;
-            if (fabs(ll) > fabs(maxRes)) {
-              maxRes      = ll;
-              maxResIndex = ii;
-              maxResPrn   = satObs->prn();
-            }
-          }
-        }
-      }
-
-      if (nObs > 0) {
-        offGal = offGal / nObs;
-      }
-      else {
-        offGal = 0.0;
-      }
-
-      if (fabs(maxRes) > 1000.0) {
-        LOG << "t_pppClient::cmpOffGal outlier " << maxResPrn.toString() << " " << maxRes << endl;
-        obsVector.erase(obsVector.begin() + maxResIndex);
-      }
-      else {
-        break;
-      }
-    }
-  }
-
-  return offGal;
-}
-
-
-// Compute A Priori BDS Receiver Clock Offset
-//////////////////////////////////////////////////////////////////////////////
-double t_pppClient::cmpOffBds(vector<t_pppSatObs*>& obsVector) {
-
-  t_lc::type tLC   = t_lc::dummy;
-  double     offBds = 0.0;
-
-  if (_opt->useSystem('C')) {
-    while (obsVector.size() > 0) {
-      offBds = 0.0;
-      double   maxRes      = 0.0;
-      int      maxResIndex = -1;
-      t_prn    maxResPrn;
-      unsigned nObs        = 0;
-      for (unsigned ii = 0; ii < obsVector.size(); ii++) {
-        const t_pppSatObs* satObs = obsVector.at(ii);
-        if (satObs->prn().system() == 'C') {
-          if (tLC == t_lc::dummy) {
-            tLC = satObs->isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1;
-          }
-          if (satObs->isValid(tLC) && (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle)) {
-            double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC);
-            ++nObs;
-            offBds += ll;
-            if (fabs(ll) > fabs(maxRes)) {
-              maxRes      = ll;
-              maxResIndex = ii;
-              maxResPrn   = satObs->prn();
-            }
-          }
-        }
-      }
-
-      if (nObs > 0) {
-        offBds = offBds / nObs;
-      }
-      else {
-        offBds = 0.0;
-      }
-
-      if (fabs(maxRes) >  1000.0) {
-        LOG << "t_pppClient::cmpOffBds outlier " << maxResPrn.toString() << " " << maxRes << endl;
-        delete obsVector.at(maxResIndex);
-        obsVector.erase(obsVector.begin() + maxResIndex);
-      }
-      else {
-        break;
-      }
-    }
-  }
-  return offBds;
-}
+
 //
 //////////////////////////////////////////////////////////////////////////////
@@ -695,8 +532,4 @@
         }
       }
-
-      _offGlo = cmpOffGlo(_obsRover);
-      _offGal = cmpOffGal(_obsRover);
-      _offBds = cmpOffBds(_obsRover);
 
       // Prepare Pseudo Observations of the Rover
Index: /trunk/BNC/src/PPP/pppParlist.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppParlist.cpp	(revision 10022)
+++ /trunk/BNC/src/PPP/pppParlist.cpp	(revision 10023)
@@ -62,5 +62,17 @@
      _noise   = OPT->_noiseCrd[2];
      break;
-   case clkR:
+   case rClkG:
+     _epoSpec = true;
+     _sigma0  = OPT->_aprSigClk;
+     break;
+   case rClkR:
+     _epoSpec = true;
+     _sigma0  = OPT->_aprSigClk;
+     break;
+   case rClkE:
+     _epoSpec = true;
+     _sigma0  = OPT->_aprSigClk;
+     break;
+   case rClkC:
      _epoSpec = true;
      _sigma0  = OPT->_aprSigClk;
@@ -74,36 +86,9 @@
          const t_pppSatObs* obs = obsVector->at(ii);
          if (obs->prn() == _prn) {
-           double offGlo = 0;
-           if (_prn.system() == 'R' && tLC != t_lc::MW) {
-             offGlo = PPP_CLIENT->offGlo();
-           }
-           double offGal = 0;
-           if (_prn.system() == 'E' && tLC != t_lc::MW) {
-             offGal = PPP_CLIENT->offGal();
-           }
-           double offBds = 0;
-           if (_prn.system() == 'C' && tLC != t_lc::MW) {
-             offBds = PPP_CLIENT->offBds();
-           }
-           _x0 = floor((obs->obsValue(tLC) - offGlo - offGal - offBds - obs->cmpValue(tLC)) / obs->lambda(tLC) + 0.5);
+           _x0 = floor((obs->obsValue(tLC) - obs->cmpValue(tLC)) / obs->lambda(tLC) + 0.5);
            break;
          }
        }
      }
-     break;
-   case offGlo:
-     _epoSpec = true;
-     _sigma0  = OPT->_aprSigClk;
-     _x0      = PPP_CLIENT->offGlo();
-     break;
-   case offGal:
-     _epoSpec = true;
-     _sigma0  = OPT->_aprSigClk;
-     _x0      = PPP_CLIENT->offGal();
-     break;
-   case offBds:
-     _epoSpec = true;
-     _sigma0  = OPT->_aprSigClk;
-     _x0      = PPP_CLIENT->offBds();
      break;
    case trp:
@@ -191,14 +176,14 @@
     if (tLC == t_lc::GIM) {return 0.0;}
     return (sta->xyzApr()[2] - obs->xc()[2]) / rhoV.NormFrobenius();
-  case clkR:
+  case rClkG:
     if (tLC == t_lc::GIM) {return 0.0;}
-    return 1.0;
-  case offGlo:
+    return (obs->prn().system() == 'G') ? 1.0 : 0.0;
+  case rClkR:
     if (tLC == t_lc::GIM) {return 0.0;}
     return (obs->prn().system() == 'R') ? 1.0 : 0.0;
-  case offGal:
+  case rClkE:
     if (tLC == t_lc::GIM) {return 0.0;}
     return (obs->prn().system() == 'E') ? 1.0 : 0.0;
-  case offBds:
+  case rClkC:
     if (tLC == t_lc::GIM) {return 0.0;}
     return (obs->prn().system() == 'C') ? 1.0 : 0.0;
@@ -325,15 +310,15 @@
     ss << "CRD_Z";
     break;
-  case clkR:
-    ss << "REC_CLK     ";
-    break;
-  case offGlo:
-    ss << "OFF_GLO     ";
-    break;
-  case offGal:
-    ss << "OFF_GAL     ";
-    break;
-  case offBds:
-    ss << "OFF_BDS     ";
+  case rClkG:
+    ss << "REC_CLK  G  ";
+    break;
+  case rClkR:
+    ss << "REC_CLK  R  ";
+    break;
+  case rClkE:
+    ss << "REC_CLK  E  ";
+    break;
+  case rClkC:
+    ss << "REC_CLK  C  ";
     break;
   case trp:
@@ -688,26 +673,21 @@
   }
 
-  // Receiver Clock
-  // --------------
-  required.push_back(new t_pppParam(t_pppParam::clkR, t_prn(), t_lc::dummy));
-
-  // GLONASS Clock Offset
-  // --------------------
-  if ( _usedSystems.contains('R')  &&
-      (_usedSystems.contains('G') || _usedSystems.contains('E') || _usedSystems.contains('C'))) {
-    required.push_back(new t_pppParam(t_pppParam::offGlo, t_prn(), t_lc::dummy));
-  }
-
-  // Galileo Clock Offset
-  // --------------------
-  if (_usedSystems.contains('E') && _usedSystems.contains('G')) {
-    required.push_back(new t_pppParam(t_pppParam::offGal, t_prn(), t_lc::dummy));
-  }
-
-  // BDS Clock Offset
-  // ----------------
-  if (_usedSystems.contains('C')  && (_usedSystems.contains('G') || _usedSystems.contains('E'))) {
-    required.push_back(new t_pppParam(t_pppParam::offBds, t_prn(), t_lc::dummy));
-  }
+  // Receiver Clocks
+  // ---------------
+   if (_usedSystems.contains('G')) {
+     required.push_back(new t_pppParam(t_pppParam::rClkG, t_prn(), t_lc::dummy));
+   }
+
+   if (_usedSystems.contains('R')) {
+     required.push_back(new t_pppParam(t_pppParam::rClkR, t_prn(), t_lc::dummy));
+   }
+
+   if (_usedSystems.contains('E')) {
+     required.push_back(new t_pppParam(t_pppParam::rClkE, t_prn(), t_lc::dummy));
+   }
+
+   if (_usedSystems.contains('C')) {
+     required.push_back(new t_pppParam(t_pppParam::rClkC, t_prn(), t_lc::dummy));
+   }
 
   // Troposphere
Index: /trunk/BNC/src/PPP/pppParlist.h
===================================================================
--- /trunk/BNC/src/PPP/pppParlist.h	(revision 10022)
+++ /trunk/BNC/src/PPP/pppParlist.h	(revision 10023)
@@ -15,5 +15,5 @@
 class t_pppParam {
  public:
-  enum e_type {crdX, crdY, crdZ, clkR, offGlo, offGal, offBds, trp, ion, amb,
+  enum e_type {crdX, crdY, crdZ, rClkG, rClkR, rClkE, rClkC, trp, ion, amb,
                cBiasG1, cBiasR1, cBiasE1, cBiasC1, pBiasG1, pBiasR1, pBiasE1, pBiasC1,
                cBiasG2, cBiasR2, cBiasE2, cBiasC2, pBiasG2, pBiasR2, pBiasE2, pBiasC2};
