Index: trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.h	(revision 333)
+++ trunk/BNC/RTCM/GPSDecoder.h	(revision 341)
@@ -34,5 +34,7 @@
     flags     = 0;
     StatID[0] = '\0';
-    SVPRN     = 0;
+    satSys    = 'G';
+    satNum    = 0;
+    slot      = 0;
     GPSWeek   = 0;
     GPSWeeks  = 0.0;
@@ -46,6 +48,8 @@
   }
   int    flags;
-  char   StatID[29+1];// Station ID
-  int    SVPRN;       // Satellite PRN
+  char   StatID[20+1];// Station ID
+  char   satSys;      // Satellite System ('G' or 'R')
+  int    satNum;      // Satellite Number (PRN for GPS NAVSTAR)
+  int    slot;        // Slot Number (for Glonass)
   int    GPSWeek;     // Week of GPS-Time
   double GPSWeeks;    // Second of Week (GPS-Time)
@@ -55,6 +59,6 @@
   double L1;          // L1 carrier phase (cycles)
   double L2;          // L2 carrier phase (cycles)
-  int    SNR1;        // L1 signal-to noise ratio (0.1 dB)
-  int    SNR2;        // L2 signal-to noise ratio (0.1 dB)
+  int    SNR1;        // L1 signal-to noise ratio (RINEX convention)
+  int    SNR2;        // L2 signal-to noise ratio (RINEX convention)
 };
 
Index: trunk/BNC/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 333)
+++ trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 341)
@@ -75,6 +75,12 @@
         for (int iSat=0; iSat < _ObsBlock.nSat; iSat++) {
           Observation* obs = new Observation();
-        
-          obs->SVPRN    = _ObsBlock.PRN[iSat];
+          if (_ObsBlock.PRN[iSat] > 100) {
+            obs->satNum = _ObsBlock.PRN[iSat] % 100;
+            obs->satSys = 'R';
+	  }
+	  else {
+            obs->satNum = _ObsBlock.PRN[iSat];
+            obs->satSys = 'G';
+	  }
           obs->GPSWeek  = epochWeek;
           obs->GPSWeeks = epochSecs;
