Index: /trunk/BNC/bncmodel.cpp
===================================================================
--- /trunk/BNC/bncmodel.cpp	(revision 2083)
+++ /trunk/BNC/bncmodel.cpp	(revision 2084)
@@ -56,7 +56,9 @@
 const double   sig_crd_p =  100.0;
 const double   sig_clk_0 = 1000.0;
+const double   sig_trp_0 =    0.01;
+const double   sig_trp_p =    1e-6;
 const double   sig_amb_0 =  100.0;
 const double   sig_P3    =    1.0;
-const double   sig_L3    =   0.01;
+const double   sig_L3    =    0.01;
 
 // Constructor
@@ -92,4 +94,7 @@
     return 1.0;
   }
+  else if (type == TROPO) {
+    return 1.0 / sin(satData->eleSat); 
+  }
   else if (type == AMB_L3) {
     if (prnIn == prn) {
@@ -106,14 +111,39 @@
 ////////////////////////////////////////////////////////////////////////////
 bncModel::bncModel() {
-  _xcBanc.ReSize(4); _xcBanc = 0.0;
+
+  bncSettings settings;
+
+  _static = false;
+  if ( Qt::CheckState(settings.value("pppStatic").toInt()) == Qt::Checked) {
+    _static = true;
+  }
+
+  _usePhase = false;
+  if ( Qt::CheckState(settings.value("pppUsePhase").toInt()) == Qt::Checked) {
+    _usePhase = true;
+  }
+
+  _estTropo = false;
+  if ( Qt::CheckState(settings.value("pppEstTropo").toInt()) == Qt::Checked) {
+    _estTropo = true;
+  }
+
+  _xcBanc.ReSize(4);  _xcBanc  = 0.0;
+  _ellBanc.ReSize(3); _ellBanc = 0.0;
+
   _params.push_back(new bncParam(bncParam::CRD_X,  1, ""));
   _params.push_back(new bncParam(bncParam::CRD_Y,  2, ""));
   _params.push_back(new bncParam(bncParam::CRD_Z,  3, ""));
   _params.push_back(new bncParam(bncParam::RECCLK, 4, ""));
-  _ellBanc.ReSize(3);
+  if (_estTropo) {
+    _params.push_back(new bncParam(bncParam::TROPO,  5, ""));
+  }
 
   unsigned nPar = _params.size();
+
   _QQ.ReSize(nPar); 
+  _xx.ReSize(nPar);
   _QQ = 0.0;
+  _xx = 0.0;
 
   _QQ(1,1) = sig_crd_0 * sig_crd_0; 
@@ -121,18 +151,6 @@
   _QQ(3,3) = sig_crd_0 * sig_crd_0; 
   _QQ(4,4) = sig_clk_0 * sig_clk_0; 
-
-  _xx.ReSize(nPar);
-  _xx = 0.0;
-
-  bncSettings settings;
-
-  _static = false;
-  if ( Qt::CheckState(settings.value("pppStatic").toInt()) == Qt::Checked) {
-    _static = true;
-  }
-
-  _usePhase = false;
-  if ( Qt::CheckState(settings.value("pppUsePhase").toInt()) == Qt::Checked) {
-    _usePhase = true;
+  if (_estTropo) {
+    _QQ(5,5) = sig_trp_0 * sig_trp_0; 
   }
 }
@@ -219,5 +237,6 @@
   satData->rho = (satData->xx - xRec).norm_Frobenius();
 
-  double tropDelay = delay_saast(satData->eleSat);
+  double tropDelay = delay_saast(satData->eleSat) + 
+                     trp() / sin(satData->eleSat);
 
   return satData->rho + clk() - satData->clk + tropDelay;
@@ -371,4 +390,11 @@
   _QQ(4,4) = sig_clk_0 * sig_clk_0;
 
+  // Tropospheric Delay
+  // ------------------
+  if (_estTropo) {
+    _params[4]->x0 += _params[4]->xx;
+    _QQ(5,5) += sig_trp_p * sig_trp_p;
+  }
+
   // Ambiguities
   // -----------
Index: /trunk/BNC/bncmodel.h
===================================================================
--- /trunk/BNC/bncmodel.h	(revision 2083)
+++ /trunk/BNC/bncmodel.h	(revision 2084)
@@ -63,4 +63,5 @@
   double z()   const {return _params[2]->solVal();}
   double clk() const {return _params[3]->solVal();}
+  double trp() const {return _estTropo ? _params[4]->solVal() : 0.0;}
   
  private:
@@ -76,4 +77,5 @@
   bool               _static;
   bool               _usePhase;
+  bool               _estTropo;
 };
 
Index: /trunk/BNC/bncpppclient.cpp
===================================================================
--- /trunk/BNC/bncpppclient.cpp	(revision 2083)
+++ /trunk/BNC/bncpppclient.cpp	(revision 2084)
@@ -344,7 +344,9 @@
   str << "    PPP " << _staID.data() << " " 
       << _epoData->tt.timestr(1) << " " << _epoData->size() << " " 
-      << setw(14) << setprecision(3) << _model->x() << "  "
-      << setw(14) << setprecision(3) << _model->y() << "  "
-      << setw(14) << setprecision(3) << _model->z();
+      << setw(14) << setprecision(3) << _model->x()   << "  "
+      << setw(14) << setprecision(3) << _model->y()   << "  "
+      << setw(14) << setprecision(3) << _model->z()   << "  "
+      << setw(8)  << setprecision(3) << _model->clk() << "  "
+      << setw(8)  << setprecision(3) << _model->trp();
 
   emit newMessage(QString(str.str().c_str()).toAscii(), true);
Index: /trunk/BNC/ppp.gpt
===================================================================
--- /trunk/BNC/ppp.gpt	(revision 2083)
+++ /trunk/BNC/ppp.gpt	(revision 2084)
@@ -9,5 +9,5 @@
 set title "JOZ20"
 set ylabel "meters"
-set xlabel "5-Dec-2009"
+set xlabel "6-Dec-2009"
 
 plot "ppp" u 1:4 t "dH" w p 3, \
