Index: trunk/BNC/src/PPP/options.h
===================================================================
--- trunk/BNC/src/PPP/options.h	(revision 5751)
+++ trunk/BNC/src/PPP/options.h	(revision 5752)
@@ -11,4 +11,11 @@
 class t_options {
  public:
+  class t_optBias {
+   public:
+    t_optBias(char system, t_lc::type tLC) : _system(system), _tLC(tLC) {}
+    char       _system;
+    t_lc::type _tLC;
+  };
+
   t_options();
   ~t_options();
@@ -17,4 +24,5 @@
   bool useGlonass();
   bool xyzAprRoverSet();
+  bool estTropo();
   std::vector<t_lc::type> LCs();
   double maxRes(t_lc::type tLC);
@@ -39,4 +47,5 @@
   std::vector<t_lc::type> _lcGLONASS;
   std::vector<t_lc::type> _lcGalileo;
+  std::vector<t_optBias>  _estBias;
 
   ColumnVector _xyzAprRover;
Index: trunk/BNC/src/PPP/parlist.cpp
===================================================================
--- trunk/BNC/src/PPP/parlist.cpp	(revision 5751)
+++ trunk/BNC/src/PPP/parlist.cpp	(revision 5752)
@@ -7,9 +7,9 @@
 #include "parlist.h"
 #include "satobs.h"
+
 #include "station.h"
-#include "tropo.h"
-#include "iono.h"
-#include "utils.h"
-#include "genconst.h"
+#include "bncutils.h"
+#include "bncconst.h"
+#include "pppClient.h"
 
 using namespace BNC;
@@ -33,13 +33,13 @@
    case crdX:
      _epoSpec = true;
-     _sigma0  = OPT->sigmaCrd();
+     _sigma0  = OPT->_sigCrd[0];
      break;
    case crdY:
      _epoSpec = true;
-     _sigma0  = OPT->sigmaCrd();
+     _sigma0  = OPT->_sigCrd[1];
      break;
    case crdZ:
      _epoSpec = true;
-     _sigma0  = OPT->sigmaCrd();
+     _sigma0  = OPT->_sigCrd[2];
      break;
    case clkR:
@@ -57,5 +57,5 @@
              offGG = PPP_CLIENT->offGG();
            }
-           _x0 = nint((obs->obsValue(tLC) - offGG - obs->cmpValue(tLC)) / obs->lambda(tLC));
+           _x0 = floor((obs->obsValue(tLC) - offGG - obs->cmpValue(tLC)) / obs->lambda(tLC) + 0.5);
            break;
          }
@@ -72,16 +72,6 @@
    case trp:
      _epoSpec = false;
-     _sigma0  = OPT->sigmaTropo();
-     _noise   = OPT->noiseTropo();
-     break;
-   case iono:
-     if (OPT->noiseIono() > 0.0) {
-       _epoSpec = false;
-     }
-     else {
-       _epoSpec = true;
-     }
-     _sigma0  = OPT->sigmaIono();
-     _noise   = OPT->noiseIono();
+     _sigma0  = OPT->_sigTropo;
+     _noise   = OPT->_noiseTropo;
      break;
    case bias:
@@ -100,5 +90,5 @@
 // 
 ////////////////////////////////////////////////////////////////////////////
-double t_param::partial(const bncTime& epoTime, const t_satObs* obs, 
+double t_param::partial(const bncTime& /* epoTime */, const t_satObs* obs, 
                         const t_lc::type& tLC) const {
 
@@ -144,13 +134,5 @@
     return 0.0;
   case trp:
-    return t_tropo::mf(OPT->tropoMF(), epoTime, sta->ellApr()[0],
-                       sta->ellApr()[1], sta->ellApr()[2], obs->eleSat());
-  case iono:
-    if (obs->prn() == _prn) {
-      return t_iono::dLCdI(tLC, obs->prn().system(), obs->channel());
-    }
-    else {
-      return 0.0;
-    }
+    return 1.0 / sin(obs->eleSat()); 
   case bias:
     if (tLC == _tLC && obs->prn().system() == _prn.system()) {
@@ -191,7 +173,4 @@
     ss << "TRP        ";
     break;
-  case iono:
-    ss << "IONO " << _prn.toString();
-    break;
   case bias:
     ss << "BIAS " << _prn.system() << ' ' << left << setw(3) << t_lc::toString(_tLC);
@@ -237,5 +216,5 @@
     }
 
-    else if (par->type() == t_param::amb || par->type() == t_param::iono) {
+    else if (par->type() == t_param::amb) {
       if (par->lastObsTime().valid() && (epoTime - par->lastObsTime() > 3600.0)) {
         remove = true;
@@ -298,6 +277,6 @@
   // Receiver Biases
   // ---------------
-  for (unsigned ii = 0; ii < OPT->estBias().size(); ii++) {
-    const t_options::t_optBias& optBias = OPT->estBias()[ii];
+  for (unsigned ii = 0; ii < OPT->_estBias.size(); ii++) {
+    const t_options::t_optBias& optBias = OPT->_estBias[ii];
     required.push_back(new t_param(t_param::bias, t_prn(optBias._system, 1), optBias._tLC));
   }
@@ -316,13 +295,4 @@
       const t_satObs* satObs = obsVector[jj];
       required.push_back(new t_param(t_param::amb, satObs->prn(), tLC, &obsVector));
-    }
-  }
-
-  // Stochastic Ionosphere
-  //----------------------
-  if (OPT->estIono()) {
-    for (unsigned jj = 0; jj < obsVector.size(); jj++) {
-      const t_satObs* satObs = obsVector[jj];
-      required.push_back(new t_param(t_param::iono, satObs->prn(), t_lc::dummy));
     }
   }
@@ -365,5 +335,5 @@
   }
 
-  return t_irc::success;
+  return success;
 }
 
@@ -398,5 +368,5 @@
           << setw(8)  << setprecision(4) << sqrt(QQ[ind][ind]);
       if (par->type() == t_param::amb) {
-        LOG << " el = " << setw(6) << setprecision(2) << par->ambEleSat() * t_genConst::rho_deg 
+        LOG << " el = " << setw(6) << setprecision(2) << par->ambEleSat() * 180.0 / M_PI
             << " epo = " << setw(4) << par->ambNumEpo();
       }
Index: trunk/BNC/src/PPP/parlist.h
===================================================================
--- trunk/BNC/src/PPP/parlist.h	(revision 5751)
+++ trunk/BNC/src/PPP/parlist.h	(revision 5752)
@@ -14,5 +14,5 @@
 class t_param {
  public:
-  enum e_type {crdX, crdY, crdZ, clkR, amb, offGG, trp, iono, bias};
+  enum e_type {crdX, crdY, crdZ, clkR, amb, offGG, trp, bias};
 
   t_param(e_type type, const t_prn& prn, t_lc::type tLC,
