Index: /trunk/BNC/src/bncmodel.cpp
===================================================================
--- /trunk/BNC/src/bncmodel.cpp	(revision 5156)
+++ /trunk/BNC/src/bncmodel.cpp	(revision 5157)
@@ -110,4 +110,15 @@
   }
 
+  // Glonass Offset
+  // --------------
+  else if (type == GLONASS_OFFSET) {
+    if (satData->prn[0] == 'R') {
+      return 1.0;
+    }
+    else {
+      return 0.0;
+    }
+  }
+
   // Galileo Offset
   // --------------
@@ -228,4 +239,7 @@
     _params.push_back(new bncParam(bncParam::TROPO, ++nextPar, ""));
   }
+  if (_opt->useGlonass) {
+    _params.push_back(new bncParam(bncParam::GLONASS_OFFSET, ++nextPar, ""));
+  }
   if (_opt->useGalileo) {
     _params.push_back(new bncParam(bncParam::GALILEO_OFFSET, ++nextPar, ""));
@@ -246,4 +260,7 @@
       _QQ(iPar,iPar) = _opt->sigTrp0 * _opt->sigTrp0; 
       pp->xx = lastTrp;
+    }
+    else if (pp->type == bncParam::GLONASS_OFFSET) {
+      _QQ(iPar,iPar) = _opt->sigGlonassOffset0 * _opt->sigGlonassOffset0; 
     }
     else if (pp->type == bncParam::GALILEO_OFFSET) {
@@ -334,5 +351,8 @@
 
   double offset = 0.0;
-  if (satData->prn[0] == 'E') {
+  if      (satData->prn[0] == 'R') {
+    offset = Glonass_offset();
+  }
+  else if (satData->prn[0] == 'E') {
     offset = Galileo_offset();
   }
@@ -483,4 +503,10 @@
       }
     
+      // Glonass Offset
+      // --------------
+      else if (pp->type == bncParam::GLONASS_OFFSET) {
+        _QQ(iPar,iPar) += _opt->sigGlonassOffsetP * _opt->sigGlonassOffsetP;
+      }
+
       // Galileo Offset
       // --------------
@@ -621,6 +647,11 @@
       newPos->xnt[6] = aprTrp + par->xx;
     }
+    else if (par->type == bncParam::GLONASS_OFFSET) {
+      strB << "\n    offGlo  = " << setw(10) << setprecision(3) << par->xx 
+           << " +- " << setw(6) << setprecision(3) 
+           << sqrt(_QQ(par->index,par->index));
+    }
     else if (par->type == bncParam::GALILEO_OFFSET) {
-      strB << "\n    offset  = " << setw(10) << setprecision(3) << par->xx 
+      strB << "\n    offGal  = " << setw(10) << setprecision(3) << par->xx 
            << " +- " << setw(6) << setprecision(3) 
            << sqrt(_QQ(par->index,par->index));
Index: /trunk/BNC/src/bncmodel.h
===================================================================
--- /trunk/BNC/src/bncmodel.h	(revision 5156)
+++ /trunk/BNC/src/bncmodel.h	(revision 5157)
@@ -41,5 +41,6 @@
 class bncParam {
  public:
-  enum parType {CRD_X, CRD_Y, CRD_Z, RECCLK, TROPO, AMB_L3, GALILEO_OFFSET};
+  enum parType {CRD_X, CRD_Y, CRD_Z, RECCLK, TROPO, AMB_L3, 
+                GLONASS_OFFSET, GALILEO_OFFSET};
   bncParam(parType typeIn, int indexIn, const QString& prn);
   ~bncParam();
@@ -70,4 +71,13 @@
       bncParam* pp = _params[ii];
       if (pp->type == bncParam::TROPO) {
+        return pp->xx;
+      }
+    }
+    return 0.0;
+  }
+  double Glonass_offset() const {
+    for (int ii = 0; ii < _params.size(); ++ii) {
+      bncParam* pp = _params[ii];
+      if (pp->type == bncParam::GLONASS_OFFSET) {
         return pp->xx;
       }
Index: /trunk/BNC/src/pppopt.cpp
===================================================================
--- /trunk/BNC/src/pppopt.cpp	(revision 5156)
+++ /trunk/BNC/src/pppopt.cpp	(revision 5157)
@@ -107,4 +107,6 @@
   if (!pppMode)     corrSync   = 0.0;
 
+  sigGlonassOffset0 = 1000.0;
+  sigGlonassOffsetP =    0.0;
   sigGalileoOffset0 = 1000.0;
   sigGalileoOffsetP =    0.0;
Index: /trunk/BNC/src/pppopt.h
===================================================================
--- /trunk/BNC/src/pppopt.h	(revision 5156)
+++ /trunk/BNC/src/pppopt.h	(revision 5157)
@@ -63,4 +63,6 @@
   bool    useGlonass;
   bool    useGalileo;
+  double  sigGlonassOffset0;
+  double  sigGlonassOffsetP;
   double  sigGalileoOffset0;
   double  sigGalileoOffsetP;
