Index: /trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- /trunk/BNC/RTCM/GPSDecoder.h	(revision 340)
+++ /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 340)
+++ /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;
Index: /trunk/BNC/RTCM3/RTCM3Decoder.cpp
===================================================================
--- /trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 340)
+++ /trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 341)
@@ -95,5 +95,12 @@
         for (int ii = 0; ii < _Parser.Data.numsats; ii++) {
           Observation* obs = new Observation();
-          obs->SVPRN    = _Parser.Data.satellites[ii];
+          if (_Parser.Data.satellites[ii] <= PRN_GPS_END) {
+            obs->satSys = 'G';
+            obs->satNum = _Parser.Data.satellites[ii];
+	  }
+	  else {
+            obs->satSys = 'R';
+            obs->satNum = _Parser.Data.satellites[ii] - PRN_GLONASS_START + 1;
+	  }
           obs->GPSWeek  = _Parser.Data.week;
           obs->GPSWeeks = _Parser.Data.timeofweek / 1000.0;
Index: /trunk/BNC/RTIGS/RTIGSDecoder.cpp
===================================================================
--- /trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 340)
+++ /trunk/BNC/RTIGS/RTIGSDecoder.cpp	(revision 341)
@@ -106,6 +106,6 @@
     for (short ii = 0; ii < numObs; ii++) {
       Observation* obs = new Observation();
-
-      obs->SVPRN    = _GPSTrans.DecObs.Obs[ii].sat_prn;
+      obs->satSys   = 'G';
+      obs->satNum   = _GPSTrans.DecObs.Obs[ii].sat_prn;
       obs->GPSWeek  = _GPSTrans.DecObs.Obs[ii].GPSTime / (7 * 86400);
       obs->GPSWeeks = _GPSTrans.DecObs.Obs[ii].GPSTime % (7 * 86400);
Index: /trunk/BNC/bnccaster.cpp
===================================================================
--- /trunk/BNC/bnccaster.cpp	(revision 340)
+++ /trunk/BNC/bnccaster.cpp	(revision 341)
@@ -65,5 +65,4 @@
     _out = new QTextStream(_outFile);
     _out->setRealNumberNotation(QTextStream::FixedNotation);
-    _out->setRealNumberPrecision(5);
   }
   else {
@@ -226,19 +225,21 @@
         if (_out) {
           if (first) {
-            *_out << begEpoch << endl;;
+            _out->setFieldWidth(1); *_out << begEpoch << endl;;
           }
-          *_out <<  obs->StatID    << " "
-                <<  obs->SVPRN     << " "
-                <<  obs->GPSWeek   << " "
-                <<  obs->GPSWeeks  << " "
-                <<  obs->C1        << " "
-                <<  obs->P1        << " "
-                <<  obs->P2        << " "
-                <<  obs->L1        << " "
-                <<  obs->L2        << " "
-                <<  obs->SNR1      << " "
-                <<  obs->SNR2      << endl;
+          _out->setFieldWidth(sizeof(obs->StatID)); 
+          *_out << obs->StatID << " " << obs->satSys;
+          _out->setFieldWidth(2); *_out << obs->satNum  << " ";
+          _out->setFieldWidth(1); *_out << obs->slot    << " ";
+          _out->setFieldWidth(4); *_out << obs->GPSWeek << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(7); *_out << obs->GPSWeeks << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(3); *_out << obs->C1       << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(3); *_out << obs->P1       << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(3); *_out << obs->P2       << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(3); *_out << obs->L1       << " ";
+          _out->setFieldWidth(14); _out->setRealNumberPrecision(3); *_out << obs->L2       << " ";
+          _out->setFieldWidth(1); *_out << obs->SNR1 << " ";
+          _out->setFieldWidth(1); *_out << obs->SNR2 << endl;
           if (!it.hasNext()) {
-            *_out << endEpoch << endl;
+            _out->setFieldWidth(1); *_out << endEpoch << endl;
           }
         }
Index: /trunk/BNC/bncrinex.cpp
===================================================================
--- /trunk/BNC/bncrinex.cpp	(revision 340)
+++ /trunk/BNC/bncrinex.cpp	(revision 341)
@@ -443,14 +443,5 @@
     iSat++;
     Observation* ob = it.next();
-    int prn = ob->SVPRN;
-    if        (prn <= PRN_GPS_END) {
-      _out << "G" << setw(2) << prn;
-    }
-    else if (prn >= PRN_GLONASS_START && prn <= PRN_GLONASS_END) {
-      _out << "R" << setw(2) << prn - PRN_GLONASS_START + 1;
-    }
-    else {
-      _out << "R" << setw(2) << prn % 100;
-    }
+    _out << ob->satSys << setw(2) << ob->satNum;
     if (iSat == 12 && it.hasNext()) {
       _out << endl << "                                ";
