Index: trunk/BNC/src/PPP/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP/pppFilter.cpp	(revision 10009)
+++ trunk/BNC/src/PPP/pppFilter.cpp	(revision 10010)
@@ -72,5 +72,5 @@
 
   const QMap<char, t_pppRefSat*> &refSatMap = epoch->refSatMap();
-
+  const QList<char> &usedSystems = _parlist.usedSystems();
   //--
   // Set Parameters
@@ -78,16 +78,29 @@
     return failure;
   }
-
+#ifdef BNC_DEBUG_PPP
   if (OPT->_obsModelType == OPT->DCMcodeBias ||
-  OPT->_obsModelType == OPT->DCMphaseBias) {
-#ifdef BNC_DEBUG_PPP
-  _parlist.printParams(_epoTime);
+      OPT->_obsModelType == OPT->DCMphaseBias) {
+    _parlist.printParams(_epoTime);
+  }
 #endif
-  }
+
   // Status Vector, Variance-Covariance Matrix
   // -----------------------------------------
   ColumnVector xFltOld = _xFlt;
   SymmetricMatrix QFltOld = _QFlt;
-  setStateVectorAndVarCovMatrix(xFltOld, QFltOld);
+  bool setNeuNoiseToZero = false;
+  for (int iSys = 0; iSys < usedSystems.size(); iSys++) {
+    char sys = usedSystems[iSys];
+    int num = 0;
+    for (unsigned jj = 0; jj < allObs.size(); jj++) {
+      if (allObs[jj]->prn().system() == sys) {
+        ++num;
+      }
+    }
+    if (num < OPT->_minObs) {
+      setNeuNoiseToZero = true;
+    }
+  }
+  setStateVectorAndVarCovMatrix(xFltOld, QFltOld, setNeuNoiseToZero);
 
   // Pre-Process Satellite Systems separately
@@ -97,5 +110,4 @@
   OPT->_obsModelType == OPT->DCMphaseBias) {
     preProcessing = true;
-    const QList<char> &usedSystems = _parlist.usedSystems();
     for (int iSys = 0; iSys < usedSystems.size(); iSys++) {
       char sys = usedSystems[iSys];
@@ -137,5 +149,4 @@
   // ------------------------------------
   preProcessing = false;
-  const QList<char> &usedSystems = _parlist.usedSystems();
   for (int iSys = 0; iSys < usedSystems.size(); iSys++) {
     char sys = usedSystems[iSys];
@@ -594,5 +605,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_pppFilter::predictCovCrdPart(const SymmetricMatrix &QFltOld) {
+void t_pppFilter::predictCovCrdPart(const SymmetricMatrix &QFltOld, bool setNeuNoiseToZero) {
 
   const vector<t_pppParam*> &params = _parlist.params();
@@ -622,5 +633,5 @@
   } else {
     double dt = _epoTime - _firstEpoTime;
-    if (dt < OPT->_seedingTime) {
+    if (dt < OPT->_seedingTime || setNeuNoiseToZero) {
       _QFlt.SymSubMatrix(1, 3) = QFltOld.SymSubMatrix(1, 3);
     } else {
@@ -633,5 +644,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void t_pppFilter::setStateVectorAndVarCovMatrix(const ColumnVector &xFltOld,
-    const SymmetricMatrix &QFltOld) {
+    const SymmetricMatrix &QFltOld, bool setNeuNoiseToZero) {
 
   const vector<t_pppParam*> &params = _parlist.params();
@@ -666,5 +677,5 @@
     }
   }
-  predictCovCrdPart(QFltOld);
+  predictCovCrdPart(QFltOld, setNeuNoiseToZero);
 }
 
Index: trunk/BNC/src/PPP/pppFilter.h
===================================================================
--- trunk/BNC/src/PPP/pppFilter.h	(revision 10009)
+++ trunk/BNC/src/PPP/pppFilter.h	(revision 10010)
@@ -206,7 +206,8 @@
               const QMap<char, t_pppRefSat*>& refSatMap);
 
-  void setStateVectorAndVarCovMatrix(const ColumnVector& xFltOld, const SymmetricMatrix& QFltOld);
-
-  void predictCovCrdPart(const SymmetricMatrix& QFltOld);
+  void setStateVectorAndVarCovMatrix(const ColumnVector& xFltOld, const SymmetricMatrix& QFltOld,
+                                     bool setNeuNoiseToZero);
+
+  void predictCovCrdPart(const SymmetricMatrix& QFltOld, bool setNeuNoiseToZero);
 
   t_irc addNoiseToPar(t_pppParam::e_type parType, char sys);
Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 10009)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 10010)
@@ -33,6 +33,6 @@
 using namespace std;
 
-const double   GLO_WEIGHT_FACTOR = 1.0;
-const double   BDS_WEIGHT_FACTOR = 1.0;
+const double   GLO_WEIGHT_FACTOR = 2.0;
+const double   BDS_WEIGHT_FACTOR = 2.0;
 
 // Constructor
@@ -355,8 +355,8 @@
   // De-Weight GLO+BDS
   // -----------------
-  if (_prn.system() == 'R') {
+  if (_prn.system() == 'R' && t_lc::includesCode(tLC)) {
     retVal *= GLO_WEIGHT_FACTOR;
   }
-  if (_prn.system() == 'C') {
+  if (_prn.system() == 'C' && t_lc::includesCode(tLC)){
     retVal *= BDS_WEIGHT_FACTOR;
   }
@@ -398,4 +398,14 @@
 
   retVal = sqrt(retVal);
+
+  // De-Weight GLO+BDS
+  // -----------------
+  if (_prn.system() == 'R' && t_lc::includesCode(tLC)) {
+    retVal *= GLO_WEIGHT_FACTOR;
+  }
+  if (_prn.system() == 'C' && t_lc::includesCode(tLC)){
+    retVal *= BDS_WEIGHT_FACTOR;
+  }
+
 
   return retVal;
