Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9820)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 9821)
@@ -33,4 +33,7 @@
 using namespace std;
 
+const double   GLO_WEIGHT_FACTOR = 5.0;
+const double   BDS_WEIGHT_FACTOR = 2.0;
+
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
@@ -344,4 +347,14 @@
 
   retVal = sqrt(retVal);
+
+  // De-Weight GLO+BDS
+  // -----------------
+  if (_prn.system() == 'R') {
+    retVal *= GLO_WEIGHT_FACTOR;
+  }
+  if (_prn.system() == 'C') {
+    retVal *= BDS_WEIGHT_FACTOR;
+  }
+
 
   // Elevation-Dependent Weighting
Index: trunk/BNC/src/PPP_SSR_I/pppFilter.cpp
===================================================================
--- trunk/BNC/src/PPP_SSR_I/pppFilter.cpp	(revision 9820)
+++ trunk/BNC/src/PPP_SSR_I/pppFilter.cpp	(revision 9821)
@@ -55,6 +55,6 @@
 using namespace std;
 
-const double   GLONASS_WEIGHT_FACTOR = 5.0;
-const double   BDS_WEIGHT_FACTOR     = 2.0; // 5.0;
+const double   GLO_WEIGHT_FACTOR = 5.0;
+const double   BDS_WEIGHT_FACTOR = 2.0; // 5.0;
 
 #define LOG (_pppClient->log())
@@ -846,5 +846,5 @@
   ionFacGLO = ionFac(prnGlo,satData);
   if (iPhase == 0)
-    ionFacGLO *= (prnGlo[0]=='R'? GLONASS_WEIGHT_FACTOR : BDS_WEIGHT_FACTOR);
+    ionFacGLO *= (prnGlo[0]=='R'? GLO_WEIGHT_FACTOR : BDS_WEIGHT_FACTOR);
   ionFacGPS = ionFac(prnGPS,satData);
 
@@ -1025,5 +1025,5 @@
     double sigL3 = ionFac * ellWgtCoef * OPT->_sigmaL1;
     if (satData->system() == 'R') {
-      sigL3 *= GLONASS_WEIGHT_FACTOR;
+      sigL3 *= GLO_WEIGHT_FACTOR;
     }
     if  (satData->system() == 'C') {
@@ -1047,5 +1047,5 @@
     double sigP3 = ionFac * ellWgtCoef * OPT->_sigmaC1;
     if (satData->system() == 'R') {
-      sigP3 *= GLONASS_WEIGHT_FACTOR;
+      sigP3 *= GLO_WEIGHT_FACTOR;
     }
     if  (satData->system() == 'C') {
Index: trunk/BNC/src/bncwindow.cpp
===================================================================
--- trunk/BNC/src/bncwindow.cpp	(revision 9820)
+++ trunk/BNC/src/bncwindow.cpp	(revision 9821)
@@ -477,5 +477,5 @@
   // -------------------
   _cmbTable = new QTableWidget(0,3);
-  _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight").split(","));
+  _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight Factor").split(","));
   _cmbTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
   _cmbTable->setSelectionBehavior(QAbstractItemView::SelectRows);
@@ -1507,5 +1507,5 @@
   // WhatsThis, Combine Corrections
   // ------------------------------
-  _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock correction streams in real-time to produce, encode, upload and save a combination of correctors coming from different providers. To add a line to the 'Combine Corrections' table hit the 'Add Row' button, double click on the 'Mountpoint' field to specify a Broadcast Ephemeris Correction mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Finally, double click on the 'Weight' field to enter a weight to be applied for this stream in the combination.</p><p>Note that the orbit information in the resulting combination stream is just copied from one of the incoming streams. The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage then BNC switches to the next remaining stream for getting hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides orbit and clock correction streams BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p><p>It is possible to specify only one Broadcast Ephemeris Correction stream in the 'Combine Corrections' table. Instead of combining corrections BNC will then add the corrections to the Broadcast Ephemeris with the possibility to save final orbit and clock results in SP3 and/or Clock RINEX format. <i>[key: cmbStreams]</i></p>"));
+  _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock correction streams in real-time to produce, encode, upload and save a combination of correctors coming from different providers. To add a line to the 'Combine Corrections' table hit the 'Add Row' button, double click on the 'Mountpoint' field to specify a Broadcast Ephemeris Correction mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Finally, double click on the 'Weight Factor' field to enter a weight factor to be applied for this stream in the combination.</p><p>Note that the orbit information in the resulting combination stream is just copied from one of the incoming streams. The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage then BNC switches to the next remaining stream for getting hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides orbit and clock correction streams BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p><p>It is possible to specify only one Broadcast Ephemeris Correction stream in the 'Combine Corrections' table. Instead of combining corrections BNC will then add the corrections to the Broadcast Ephemeris with the possibility to save final orbit and clock results in SP3 and/or Clock RINEX format. <i>[key: cmbStreams]</i></p>"));
   addCmbRowButton->setWhatsThis(tr("<p>Hit 'Add Row' button to add another line to the 'Combine Corrections' table.</p>"));
   delCmbRowButton->setWhatsThis(tr("<p>Hit 'Delete' button to delete the highlighted line(s) from the 'Combine Corrections' table.</p>"));
Index: trunk/BNC/src/combination/bnccomb.cpp
===================================================================
--- trunk/BNC/src/combination/bnccomb.cpp	(revision 9820)
+++ trunk/BNC/src/combination/bnccomb.cpp	(revision 9821)
@@ -174,7 +174,7 @@
       QStringList hlp = it.next().split(" ");
       cmbAC* newAC = new cmbAC();
-      newAC->mountPoint = hlp[0];
-      newAC->name       = hlp[1];
-      newAC->weight     = hlp[2].toDouble();
+      newAC->mountPoint   = hlp[0];
+      newAC->name         = hlp[1];
+      newAC->weightFactor = hlp[2].toDouble();
       QMapIterator<char, unsigned> itSys(_cmbSysPrn);
       // init
@@ -456,4 +456,5 @@
     // ----------------------
     QString acName;
+    double weigthFactor;
     QListIterator<cmbAC*> icAC(_ACs);
     while (icAC.hasNext()) {
@@ -461,4 +462,5 @@
       if (AC->mountPoint == staID) {
         acName = AC->name;
+        weigthFactor = AC->weightFactor;
         break;
       }
@@ -492,4 +494,5 @@
     newCorr->_acName  = acName;
     newCorr->_clkCorr = clkCorr;
+    newCorr->_weightFactor = weigthFactor;
 
     // Check orbit correction
@@ -1033,4 +1036,5 @@
     ll(iObs) = (corr->_clkCorr._dClk * t_CST::c - corr->_satCodeBiasIF) - DotProduct(AA.Row(iObs), x0);
 
+    PP(iObs, iObs) *= 1.0 / (corr->_weightFactor * corr->_weightFactor);
   }
 
Index: trunk/BNC/src/combination/bnccomb.h
===================================================================
--- trunk/BNC/src/combination/bnccomb.h	(revision 9820)
+++ trunk/BNC/src/combination/bnccomb.h	(revision 9821)
@@ -65,17 +65,17 @@
    public:
     cmbAC() {
-      weight = 0.0;
-      numObs['G'] = 0;
-      numObs['R'] = 0;
-      numObs['E'] = 0;
-      numObs['C'] = 0;
-      numObs['J'] = 0;
-      numObs['S'] = 0;
-      numObs['I'] = 0;
+      weightFactor = 1.0;
+      numObs['G']  = 0;
+      numObs['R']  = 0;
+      numObs['E']  = 0;
+      numObs['C']  = 0;
+      numObs['J']  = 0;
+      numObs['S']  = 0;
+      numObs['I']  = 0;
     }
     ~cmbAC() {}
     QString  mountPoint;
     QString  name;
-    double   weight;
+    double   weightFactor;
     QMap<char, unsigned> numObs;
   };
@@ -101,4 +101,5 @@
     double         _dClkResult;
     ColumnVector   _diffRao;
+    double         _weightFactor;
     QString ID() {return _acName + "_" + _prn;}
   };
Index: trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 9820)
+++ trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 9821)
@@ -591,4 +591,5 @@
           emit(newMessage("                      RTNET format error: "
                           +  lines[ii].toLatin1(), false));
+          break;
         }
       }
@@ -632,5 +633,4 @@
                                      rtnUra, rtnClk, rtnVel, rtnCoM, rtnClkSig, sd, outLine);
         if (irc != success) {
-        /*   !xP.size()       */
           continue;
         }
