Index: trunk/BNC/src/PPP/pppClient.cpp
===================================================================
--- trunk/BNC/src/PPP/pppClient.cpp	(revision 10231)
+++ trunk/BNC/src/PPP/pppClient.cpp	(revision 10232)
@@ -297,5 +297,5 @@
     // Check Blunders
     // --------------
-    const double BLUNDER = 150.0;
+    const double BLUNDER = 100.0;
     double   maxRes      = 0.0;
     unsigned maxResIndex = 0;
@@ -338,160 +338,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;
-  const double MAXRES = 1000.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) > MAXRES) {
-        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;
-  const double MAXRES = 1000.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) > MAXRES) {
-        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;
-  const double MAXRES = 1000.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) > MAXRES) {
-        LOG << "t_pppClient::cmpOffBds Outlier " << maxResPrn.toString() << " " << maxRes << endl;
-        delete obsVector.at(maxResIndex);
-        obsVector.erase(obsVector.begin() + maxResIndex);
-      }
-      else {
-        break;
-      }
-    }
-  }
-  return offBds;
-}
+
 //
 //////////////////////////////////////////////////////////////////////////////
@@ -633,8 +478,4 @@
       return finish(failure, 4);
     }
-
-      _offGlo = cmpOffGlo(_obsRover);
-      _offGal = cmpOffGal(_obsRover);
-      _offBds = cmpOffBds(_obsRover);
 
     // Prepare Pseudo Observations of the Rover
Index: trunk/BNC/src/PPP/pppClient.h
===================================================================
--- trunk/BNC/src/PPP/pppClient.h	(revision 10231)
+++ trunk/BNC/src/PPP/pppClient.h	(revision 10232)
@@ -61,8 +61,5 @@
   t_irc cmpBancroft(const bncTime& epoTime, std::vector<t_pppSatObs*>& obsVector,
                     ColumnVector& xyzc, bool print);
-  double cmpOffGlo(std::vector<t_pppSatObs*>& obsVector);
-  double cmpOffGal(std::vector<t_pppSatObs*>& obsVector);
-  double cmpOffBds(std::vector<t_pppSatObs*>& obsVector);
-  
+
   t_output*                 _output;
   t_pppEphPool*             _ephPool;
@@ -74,5 +71,5 @@
   double                    _offGlo;
   double                    _offGal;
-  double                    _offBds;  
+  double                    _offBds;
   std::vector<t_pppSatObs*> _obsRover;
   std::ostringstream*       _log;
Index: trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP/pppFilter.cpp	(revision 10231)
+++ trunk/BNC/src/PPP/pppFilter.cpp	(revision 10232)
@@ -306,5 +306,5 @@
                                     const vector<t_pppSatObs*> &obsVector) {
 
-  const double SLIP = 300.0;
+  const double SLIP = 20.0;
   string epoTimeStr = string(_epoTime);
   const vector<t_pppParam*> &params = _parlist->params();
Index: trunk/BNC/src/PPP/pppParlist.cpp
===================================================================
--- trunk/BNC/src/PPP/pppParlist.cpp	(revision 10231)
+++ trunk/BNC/src/PPP/pppParlist.cpp	(revision 10232)
@@ -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:
@@ -168,14 +153,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;
@@ -296,15 +281,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:
@@ -491,26 +476,21 @@
   required.push_back(new t_pppParam(t_pppParam::crdZ, t_prn(), t_lc::dummy));
 
-  // 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 10231)
+++ trunk/BNC/src/PPP/pppParlist.h	(revision 10232)
@@ -14,5 +14,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};
@@ -23,5 +23,5 @@
   e_type type() const {return _type;}
   double x0()  const {return _x0;}
-  double partial(const bncTime& epoTime, const t_pppSatObs* obs, 
+  double partial(const bncTime& epoTime, const t_pppSatObs* obs,
                  const t_lc::type& tLC) const;
   bool   epoSpec() const {return _epoSpec;}
