Index: /trunk/BNC/src/PPP/pppParlist.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppParlist.cpp	(revision 9493)
+++ /trunk/BNC/src/PPP/pppParlist.cpp	(revision 9494)
@@ -384,5 +384,6 @@
 
     else if (par->type() == t_pppParam::amb) {
-      if (OPT->_obsModelType == OPT->DCMcodeBias ||  OPT->_obsModelType == OPT->DCMphaseBias) {
+      if (OPT->_obsModelType == OPT->DCMcodeBias ||
+          OPT->_obsModelType == OPT->DCMphaseBias) {
         t_prn refPrn = (refSatMap[par->prn().system()])->prn();
         if (par->lastObsTime().valid() &&
@@ -399,5 +400,6 @@
 
     else if (par->type() == t_pppParam::ion) {
-      if (OPT->_obsModelType == OPT->DCMcodeBias ||  OPT->_obsModelType == OPT->DCMphaseBias) {
+      if (OPT->_obsModelType == OPT->DCMcodeBias ||
+          OPT->_obsModelType == OPT->DCMphaseBias) {
         if (par->lastObsTime().valid() && (epoTime - par->lastObsTime() > 1.0)) {
             remove = true;
@@ -493,19 +495,40 @@
   // --------------------
   if (OPT->_obsModelType == OPT->DCMcodeBias) {
+    std::vector<t_lc::type> lc;
     if (_usedSystems.contains('G')) {
-      required.push_back(new t_pppParam(t_pppParam::cBiasG1, t_prn(), t_lc::c1));
-      required.push_back(new t_pppParam(t_pppParam::cBiasG2, t_prn(), t_lc::c2));
+      lc = OPT->LCs('G');
+      if (std::find(lc.begin(), lc.end(), t_lc::c1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasG1, t_prn(), t_lc::c1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::c2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasG2, t_prn(), t_lc::c2));
+      }
     }
     if (_usedSystems.contains('R')) {
-      required.push_back(new t_pppParam(t_pppParam::cBiasR1, t_prn(), t_lc::c1));
-      required.push_back(new t_pppParam(t_pppParam::cBiasR2, t_prn(), t_lc::c2));
+      lc = OPT->LCs('R');
+      if (std::find(lc.begin(), lc.end(), t_lc::c1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasR1, t_prn(), t_lc::c1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::c2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasR2, t_prn(), t_lc::c2));
+      }
     }
     if (_usedSystems.contains('E')) {
-      required.push_back(new t_pppParam(t_pppParam::cBiasE1, t_prn(), t_lc::c1));
-      required.push_back(new t_pppParam(t_pppParam::cBiasE2, t_prn(), t_lc::c2));
+      lc = OPT->LCs('E');
+      if (std::find(lc.begin(), lc.end(), t_lc::c1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasE1, t_prn(), t_lc::c1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::c2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasE2, t_prn(), t_lc::c2));
+      }
     }
     if (_usedSystems.contains('C')) {
-      required.push_back(new t_pppParam(t_pppParam::cBiasC1, t_prn(), t_lc::c1));
-      required.push_back(new t_pppParam(t_pppParam::cBiasC2, t_prn(), t_lc::c2));
+      lc = OPT->LCs('C');
+      if (std::find(lc.begin(), lc.end(), t_lc::c1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasC1, t_prn(), t_lc::c1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::c2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::cBiasC2, t_prn(), t_lc::c2));
+      }
     }
   }
@@ -515,19 +538,41 @@
   if ((OPT->_obsModelType == OPT->DCMphaseBias) ||
       (OPT->_obsModelType == OPT->PPPRTK)     ) {
+    std::vector<t_lc::type> lc;
     if (_usedSystems.contains('G')) {
-      required.push_back(new t_pppParam(t_pppParam::pBiasG1, t_prn(), t_lc::l1));
-      required.push_back(new t_pppParam(t_pppParam::pBiasG2, t_prn(), t_lc::l2));
+      lc = OPT->LCs('G');
+      if (std::find(lc.begin(), lc.end(), t_lc::l1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasG1, t_prn(), t_lc::l1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::l2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasG2, t_prn(), t_lc::l2));
+      }
     }
     if (_usedSystems.contains('R')) {
-      required.push_back(new t_pppParam(t_pppParam::pBiasR1, t_prn(), t_lc::l1));
-      required.push_back(new t_pppParam(t_pppParam::pBiasR2, t_prn(), t_lc::l2));
+      lc = OPT->LCs('R');
+      if (std::find(lc.begin(), lc.end(), t_lc::l1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasR1, t_prn(), t_lc::l1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::l2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasR2, t_prn(), t_lc::l2));
+      }
+
     }
     if (_usedSystems.contains('E')) {
-      required.push_back(new t_pppParam(t_pppParam::pBiasE1, t_prn(), t_lc::l1));
-      required.push_back(new t_pppParam(t_pppParam::pBiasE2, t_prn(), t_lc::l2));
+      lc = OPT->LCs('E');
+      if (std::find(lc.begin(), lc.end(), t_lc::l1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasE1, t_prn(), t_lc::l1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::l2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasE2, t_prn(), t_lc::l2));
+      }
     }
     if (_usedSystems.contains('C')) {
-      required.push_back(new t_pppParam(t_pppParam::pBiasC1, t_prn(), t_lc::l1));
-      required.push_back(new t_pppParam(t_pppParam::pBiasC2, t_prn(), t_lc::l2));
+      lc = OPT->LCs('C');
+      if (std::find(lc.begin(), lc.end(), t_lc::l1) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasC1, t_prn(), t_lc::l1));
+      }
+      if (std::find(lc.begin(), lc.end(), t_lc::l2) != lc.end()) {
+        required.push_back(new t_pppParam(t_pppParam::pBiasC2, t_prn(), t_lc::l2));
+      }
     }
   }
Index: /trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9493)
+++ /trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9494)
@@ -366,4 +366,12 @@
 
   retVal = sqrt(retVal);
+
+  if (_prn.system() == 'R' && (t_lc::includesCode(tLC) ||  t_lc::includesPhase(tLC))) {
+    retVal *= 2.0;
+  }
+
+  if (_prn.system() == 'C' && (t_lc::includesCode(tLC) ||  t_lc::includesPhase(tLC))) {
+    retVal *= 2.0;
+  }
 
   return retVal;
Index: /trunk/BNC/src/bncmain.cpp
===================================================================
--- /trunk/BNC/src/bncmain.cpp	(revision 9493)
+++ /trunk/BNC/src/bncmain.cpp	(revision 9494)
@@ -226,9 +226,10 @@
       "\n"
       "PPP Client Panel 3 keys:\n"
-      "   PPP/lcGPS        {Select observations from GPS code or phase data [character string; no|Pi|Li|Pi&Li]}\n"
-      "   PPP/lcGLONASS    {Select observations from GLONASS code or phase data [character string: no|Pi|Li|Pi&Li]}\n"
-      "   PPP/lcGalileo    {Select observations from Galileo code or phase data [character string: no|Pi|Li|Pi&Li]}\n"
-      "   PPP/lcBDS        {Select observations from BDS code or phase data [character string: no|Pi|Li|Pi&Li]}\n"
-      "   PPP/modelObs     {select observation model [character string: Ionosphere-free PPP|Undifferenced PPP-RTK|DCM with Code Biases|DCM with Phase Biases]}\n"
+      "   PPP/lcGPS        {Select observations from GPS code and/or phase data [character string; no|Pi|Li|Pi&Li]}\n"
+      "   PPP/lcGLONASS    {Select observations from GLONASS code and/or phase data [character string: no|Pi|Li|Pi&Li]}\n"
+      "   PPP/lcGalileo    {Select observations from Galileo code and/or phase data [character string: no|Pi|Li|Pi&Li]}\n"
+      "   PPP/lcBDS        {Select observations from BDS code and/or phase data [character string: no|Pi|Li|Pi&Li]}\n"
+      "   PPP/modelObs     {select observation model [character string: Ionosphere-free PPP|Uncombined PPP|PPP-RTK|DCM with Code Biases|DCM with Phase Biases]}\n"
+      "   PPP/pseudoOb     {select pseudo observations [character string: no|Ionosphere&Troposphere]}\n"
       "   PPP/sigmaC1      {Sigma for code observations in meters [floating-point number]}\n"
       "   PPP/sigmaL1      {Sigma for phase observations in meters [floating-point number]}\n"
Index: /trunk/BNC/src/bncwindow.cpp
===================================================================
--- /trunk/BNC/src/bncwindow.cpp	(revision 9493)
+++ /trunk/BNC/src/bncwindow.cpp	(revision 9494)
@@ -1447,15 +1447,16 @@
   // WhatsThis, PPP (3)
   // ------------------
-  _pppWidgets._lcGPS->setWhatsThis(tr("<p>Specify which kind of GPS observations you want to use and on which kind of ionosphere-free linear combination of GPS observations you want to base ambiguity resolutions.</p><p><ul><li>Specifying 'P3' means that you request BNC to use code data and so-called P3 ionosphere-free linear combination of code observations.</li><li>'P3&L3' means that you request BNC to use both, code and phase data and so-called P3 and L3 ionosphere-free linear combination of code and phase observations.</li></ul></p><p>Note that most geodetic receivers support the observation of GPS code and phase data. Hence specifying 'P3&L3' would be a good choice when processing data from such a receiver.</p><p>Specifying 'no' means that you don't want BNC to use GPS data. <i>[key: PPP/lcGPS]</i></p>"));
-  _pppWidgets._lcGLONASS->setWhatsThis(tr("<p>Specify which kind of GLONASS observations you want to use and on which kind of ionosphere-free linear combination of GLONASS observations you want to base ambiguity resolutions.</p><p><ul><li>Specifying 'P3' means that you request BNC to use code data and so-called P3 ionosphere-free linear combination of code observations.</li><li>'L3' means that you request BNC to use phase data and so-called L3 ionosphere-free linear combination of phase observations.</li> <li>'P3&L3' means that you request BNC to use both, code and phase data and so-called P3 and L3 ionosphere-free linear combination of code and phase observations.</li></ul></p><p>Specifying 'no' means that you don't want BNC to use GLONASS data. <i>[key: PPP/lcGLONASS]</i></p>"));
-  _pppWidgets._lcGalileo->setWhatsThis(tr("<p>Specify which kind of Galileo observations you want to use and on which kind of of ionosphere-free linear combination of Galileo observations you want to base ambiguity resolutions.</p><p><ul><li>Specifying 'P3' means that you request BNC to use code data and so-called P3 ionosphere-free linear combination of code observations.</li><li>'L3' means that you request BNC to use phase data and so-called L3 ionosphere-free linear combination of phase observations.</li> <li>'P3&L3' means that you request BNC to use both, code and phase data and so-called P3 and L3 ionosphere-free linear combination of code and phase observations.</li></ul></p><p>Specifying on of these options makes only sense if Galileo data are part of the processed observation stream.</p><p>Specifying 'no' means that you don't want BNC to use Galileo data. <i>[key: PPP/lcGalileo]</i></p>"));
-  _pppWidgets._lcBDS->setWhatsThis(tr("<p>Specify which kind of model for observations you want to use and on which kind of ionosphere-free linear combination of BDS observations you want to base ambiguity resolutions.</p><p><ul><li>Specifying 'P3' means that you request BNC to use code data and so-called P3 ionosphere-free linear combination of code observations.</li><li>'L3' means that you request BNC to use phase data and so-called L3 ionosphere-free linear combination of phase observations.</li> <li>'P3&L3' means that you request BNC to use both, code and phase data and so-called P3 and L3 ionosphere-free linear combination of code and phase observations.</li></ul></p><p>Specifying on of these options makes only sense if BDS data are part of the processed observation stream.</p><p>Specifying 'no' means that you don't want to use BDS data. <i>[key: PPP/lcBDS]</i></p>"));
+  _pppWidgets._lcGPS->setWhatsThis(tr("<p>Specify which kind of GPS observations you want to use</p><p><ul><li>Specifying 'Pi' means that you request BNC to use code data of two frequencies.</li><li>Specifying 'Li' means that you request BNC to use phase data of two frequencies.</li> <li>Specifying 'Pi&Li' means that you request BNC to use both, code and phase data of two frequencies.</li></ul></p><p>Specifying 'no' means that you don't want BNC to use GPS data. <i>[key: PPP/lcGPS]</i></p>"));
+  _pppWidgets._lcGLONASS->setWhatsThis(tr("<p>Specify which kind of GLONASS observations you want to use</p><p><ul><li>Specifying 'Pi' means that you request BNC to use code data of two frequencies.</li><li>Specifying'Li' means that you request BNC to use phase data of two frequencies.</li> <li>Specifying'Pi&Li' means that you request BNC to use both, code and phase data of two frequencies.</li></ul></p><p>Specifying 'no' means that you don't want BNC to use GLONASS data. <i>[key: PPP/lcGLONASS]</i></p>"));
+  _pppWidgets._lcGalileo->setWhatsThis(tr("<p>Specify which kind of Galileo observations you want to use</p><p><ul><li>Specifying 'Pi' means that you request BNC to use code data of two frequencies.</li><li>Specifying'Li' means that you request BNC to use phase data of two frequencies.</li> <li>Specifying'Pi&Li' means that you request BNC to use both, code and phase data of two frequencies.</li></ul></p><p>Specifying 'no' means that you don't want BNC to use Galileo data. <i>[key: PPP/lcGalileo]</i></p>"));
+  _pppWidgets._lcBDS->setWhatsThis(tr("<p>Specify which kind of BDS observations you want to use</p><p><ul><li>Specifying 'Pi' means that you request BNC to use code data from two frequencies.</li><li>Specifying'Li' means that you request BNC to use phase data of two frequencies.</li> <li>Specifying'Pi&Li' means that you request BNC to use both, code and phase data of two frequencies.</li></ul></p><p>Specifying 'no' means that you don't want BNC to use BDS data. <i>[key: PPP/lcBDS]</i></p>"));
   _pppWidgets._modelObs->setWhatsThis(tr("<p>Specify which kind of PPP model you want to use. <i>[key: PPP/modelObs]</i></p>"));
-  _pppWidgets._sigmaC1->setWhatsThis(tr("<p>Enter a Sigma for GNSS C1 code observations in meters.</p><p>The higher the sigma you enter, the less the contribution of C1 code observations to a PPP solution from combined code and phase data. 2.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma C1 = 2.0' <i>[key: PPP/sigmaC1]</i></p>"));
-  _pppWidgets._sigmaL1->setWhatsThis(tr("<p>Enter a Sigma for GNSS L1 phase observations in meters.</p><p>The higher the sigma you enter, the less the contribution of L1 phase observations to a PPP solutions from combined code and phase data. 0.01 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma L1 = 0.01' <i>[key: PPP/sigmaL1]</i></p>"));
-  _pppWidgets._sigmaGIM->setWhatsThis(tr("<p>Enter a Sigma for GIM pseudo observations in meters.</p><p>The higher the sigma you enter, the less the contribution of GIM pseudo observations to a PPP solution. 4.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma GIM = 4.0' <i>[key: PPP/sigmaGIM]</i></p>"));
+  _pppWidgets._pseudoObs->setWhatsThis(tr("<p>Specify which kind of pseudo observations you want to use <i>[key: PPP/pseudoObs]</i></p>"));
+  _pppWidgets._sigmaC1->setWhatsThis(tr("<p>Enter a Sigma for GPS C1 code observations in meters.</p><p>The higher the sigma you enter, the less the contribution of C1 code observations to a PPP solution from combined code and phase data. 1.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma C1 = 1.0' <i>[key: PPP/sigmaC1]</i></p>"));
+  _pppWidgets._sigmaL1->setWhatsThis(tr("<p>Enter a Sigma for GPS L1 phase observations in meters.</p><p>The higher the sigma you enter, the less the contribution of L1 phase observations to a PPP solutions from combined code and phase data. 0.01 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma L1 = 0.01' <i>[key: PPP/sigmaL1]</i></p>"));
+  _pppWidgets._sigmaGIM->setWhatsThis(tr("<p>Enter a Sigma for GIM pseudo observations in meters.</p><p>The higher the sigma you enter, the less the contribution of GIM pseudo observations to a PPP solution. 3.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma GIM = 3.0' <i>[key: PPP/sigmaGIM]</i></p>"));
   _pppWidgets._sigmaTz0->setWhatsThis(tr("<p>Enter a Sigma for a Tropospheric pseudo observation in zenith direction in meters.</p><p>The higher the sigma you enter, the less the contribution of Tz0 pseudo observations to a PPP solution. 0.10 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma Tzo = 0.10' <i>[key: PPP/sigmaTz0]</i></p>"));
-  _pppWidgets._maxResC1->setWhatsThis(tr("<p>Specify a maximum for residuals from C1 code observations in a PPP solution. '3.0' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Rex C1 = 3.0' <i>[key: PPP/maxResC1]</i></p>"));
-  _pppWidgets._maxResL1->setWhatsThis(tr("<p>Specify a maximum for residuals from L1 code observations in a PPP solution. '0.03' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Rex L1 = 0.03' <i>[key: PPP/maxResL1]</i></p>"));
+  _pppWidgets._maxResC1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS C1 code observations in a PPP solution. '3.0' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Rex C1 = 3.0' <i>[key: PPP/maxResC1]</i></p>"));
+  _pppWidgets._maxResL1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS L1 code observations in a PPP solution. '0.03' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Rex L1 = 0.03' <i>[key: PPP/maxResL1]</i></p>"));
   _pppWidgets._eleWgtCode->setWhatsThis(tr("<p>Tic 'Ele Wgt Code' to use satellite Elevation depending Weights for Code observations in the PPP solution. <i>[key: PPP/eleWgtCode]</i></p>"));
   _pppWidgets._eleWgtPhase->setWhatsThis(tr("<p>Tic 'Ele Wgt Phase' to use satellite Elevation depending Weights for Phase observations in the PPP solution. <i>[key: PPP/eleWgtPhase]</i></p>"));
Index: /trunk/BNC/src/pppMain.cpp
===================================================================
--- /trunk/BNC/src/pppMain.cpp	(revision 9493)
+++ /trunk/BNC/src/pppMain.cpp	(revision 9494)
@@ -181,5 +181,5 @@
     opt->_sigmaC1      = settings.value("PPP/sigmaC1").toDouble(); if (opt->_sigmaC1 <= 0.0)  opt->_sigmaC1  = 1.00;
     opt->_sigmaL1      = settings.value("PPP/sigmaL1").toDouble(); if (opt->_sigmaL1 <= 0.0)  opt->_sigmaL1  = 0.01;
-    opt->_sigmaGIM     = settings.value("PPP/sigmaGIM").toDouble();if (opt->_sigmaGIM <= 0.0) opt->_sigmaGIM = 4.00;
+    opt->_sigmaGIM     = settings.value("PPP/sigmaGIM").toDouble();if (opt->_sigmaGIM <= 0.0) opt->_sigmaGIM = 3.00;
     opt->_sigmaTz0     = settings.value("PPP/sigmaTz0").toDouble();if (opt->_sigmaTz0 <= 0.0) opt->_sigmaTz0 = 0.10;
     opt->_corrWaitTime = settings.value("PPP/corrWaitTime").toDouble();
@@ -225,5 +225,4 @@
       opt->_obsModelType = t_pppOptions::DCMcodeBias;
       opt->_refSatRequired = true;
-      opt->_noiseIon       = 1e4;
       opt->_noiseCodeBias  = 1e4;
     }
@@ -253,4 +252,34 @@
       }
     }
+    if (settings.value("PPP/lcGPS").toString() == "Pi") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGPS.push_back(t_lc::cIF);
+      }
+      else {
+        opt->_LCsGPS.push_back(t_lc::c1);
+        opt->_LCsGPS.push_back(t_lc::c2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGPS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGPS.push_back(t_lc::Tz0);
+        }
+      }
+    }
+    if (settings.value("PPP/lcGPS").toString() == "Li") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGPS.push_back(t_lc::lIF);
+      }
+      else {
+        opt->_LCsGPS.push_back(t_lc::l1);
+        opt->_LCsGPS.push_back(t_lc::l2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGPS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGPS.push_back(t_lc::Tz0);
+        }
+      }
+    }
     // GLONASS
     if (settings.value("PPP/lcGLONASS").toString() == "Pi&Li") {
@@ -272,4 +301,34 @@
       }
     }
+    if (settings.value("PPP/lcGLONASS").toString() == "Pi") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGLONASS.push_back(t_lc::cIF);
+      }
+      else {
+        opt->_LCsGLONASS.push_back(t_lc::c1);
+        opt->_LCsGLONASS.push_back(t_lc::c2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGLONASS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGLONASS.push_back(t_lc::Tz0);
+        }
+      }
+    }
+    if (settings.value("PPP/lcGLONASS").toString() == "Li") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGLONASS.push_back(t_lc::lIF);
+      }
+      else {
+        opt->_LCsGLONASS.push_back(t_lc::l1);
+        opt->_LCsGLONASS.push_back(t_lc::l2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGLONASS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGLONASS.push_back(t_lc::Tz0);
+        }
+      }
+    }
     // Galileo
     if (settings.value("PPP/lcGalileo").toString() == "Pi&Li") {
@@ -291,4 +350,34 @@
       }
     }
+    if (settings.value("PPP/lcGalileo").toString() == "Pi") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGalileo.push_back(t_lc::cIF);
+      }
+      else {
+        opt->_LCsGalileo.push_back(t_lc::c1);
+        opt->_LCsGalileo.push_back(t_lc::c2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGalileo.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGalileo.push_back(t_lc::Tz0);
+        }
+      }
+    }
+    if (settings.value("PPP/lcGalileo").toString() == "Li") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsGalileo.push_back(t_lc::lIF);
+      }
+      else {
+        opt->_LCsGalileo.push_back(t_lc::l1);
+        opt->_LCsGalileo.push_back(t_lc::l2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsGalileo.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsGalileo.push_back(t_lc::Tz0);
+        }
+      }
+    }
     // BDS
     if (settings.value("PPP/lcBDS").toString() == "Pi&Li") {
@@ -310,5 +399,34 @@
       }
     }
-
+    if (settings.value("PPP/lcBDS").toString() == "Pi") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsBDS.push_back(t_lc::cIF);
+      }
+      else {
+        opt->_LCsBDS.push_back(t_lc::c1);
+        opt->_LCsBDS.push_back(t_lc::c2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsBDS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsBDS.push_back(t_lc::Tz0);
+        }
+      }
+    }
+    if (settings.value("PPP/lcBDS").toString() == "Li") {
+      if (opt->_obsModelType == t_pppOptions::IF) {
+        opt->_LCsBDS.push_back(t_lc::lIF);
+      }
+      else {
+        opt->_LCsBDS.push_back(t_lc::l1);
+        opt->_LCsBDS.push_back(t_lc::l2);
+        if (opt->_pseudoObsIono) {
+          opt->_LCsBDS.push_back(t_lc::GIM);
+        }
+        if (opt->_pseudoObsTropo) {
+          opt->_LCsBDS.push_back(t_lc::Tz0);
+        }
+      }
+    }
     // Information from the coordinate file
     // ------------------------------------
@@ -335,5 +453,5 @@
     opt->_minObs      = settings.value("PPP/minObs").toInt(); if (opt->_minObs < 5) opt->_minObs = 5;
     opt->_minEle      = settings.value("PPP/minEle").toDouble() * M_PI / 180.0;
-    opt->_maxResC1    = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 3.00;
+    opt->_maxResC1    = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 3.0;
     opt->_maxResL1    = settings.value("PPP/maxResL1").toDouble(); if (opt->_maxResL1 <= 0.0) opt->_maxResL1 = 0.03;
     opt->_eleWgtCode  = (settings.value("PPP/eleWgtCode").toInt() != 0);
Index: /trunk/BNC/src/pppWidgets.cpp
===================================================================
--- /trunk/BNC/src/pppWidgets.cpp	(revision 9493)
+++ /trunk/BNC/src/pppWidgets.cpp	(revision 9494)
@@ -124,5 +124,5 @@
   _lcGPS->addItems(QString("P3,P3&L3").split(","));
 #else
-  _lcGPS->addItems(QString("no,Pi&Li").split(","));
+  _lcGPS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
 #endif
 
@@ -131,5 +131,5 @@
    _lcGLONASS->addItems(QString("no,P3,L3,P3&L3").split(","));
 #else
-  _lcGLONASS->addItems(QString("no,Pi&Li").split(","));
+  _lcGLONASS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
 #endif
 
@@ -138,5 +138,5 @@
   _lcGalileo->addItems(QString("no,P3,L3,P3&L3").split(","));
 #else
-  _lcGalileo->addItems(QString("no,Pi&Li").split(","));
+  _lcGalileo->addItems(QString("no,Pi,Li,Pi&Li").split(","));
 #endif
 
@@ -145,5 +145,5 @@
   _lcBDS->addItems(QString("no,P3,L3,P3&L3").split(","));
 #else
-  _lcBDS->addItems(QString("no,Pi&Li").split(","));
+  _lcBDS->addItems(QString("no,Pi,Li,Pi&Li").split(","));
 #endif
 
