Index: trunk/BNC/bncrinex.cpp
===================================================================
--- trunk/BNC/bncrinex.cpp	(revision 3343)
+++ trunk/BNC/bncrinex.cpp	(revision 3344)
@@ -773,9 +773,11 @@
 }
 
-string obsToStr(double val) {
+// 
+////////////////////////////////////////////////////////////////////////////
+string bncRinex::obsToStr(double val, int width, int precision) {
   if (val != 0.0) {
     ostringstream str;
     str.setf(ios::showpoint | ios::fixed);
-    str << setw(14) << setprecision(3) << val;
+    str << setw(width) << setprecision(precision) << val;
     return str.str();
   }
@@ -794,78 +796,84 @@
   str << obs.satSys << setw(2) << setfill('0') << obs.satNum << setfill(' ');
 
+  if (obs.satSys == 'R') { // Glonass
+    str << ' ' << setw(2) << obs.slotNum;
+  }
+  else {
+    str << "   ";
+  }
+
   if      (obs.satSys == 'G') { // GPS
     if (obs.has1C()) {
-      str << " 1C " 
+      str << "  1C " 
           << obsToStr(obs.C1)  << ' '  
           << obsToStr(obs.L1C) << ' '
           << obsToStr(obs.D1C) << ' '
-          << obsToStr(obs.S1C) << ' '
+          << obsToStr(obs.S1C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has1P()) {
-      str << " 1W "
+      str << "  1W "
           << obsToStr(obs.P1)  << ' '  
           << obsToStr(obs.L1P) << ' '
           << obsToStr(obs.D1P) << ' '
-          << obsToStr(obs.S1P) << ' '
+          << obsToStr(obs.S1P, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has2P()) {
-      str << " 2P "
+      str << "  2P "
           << obsToStr(obs.P2)  << ' '
           << obsToStr(obs.L2P) << ' '
           << obsToStr(obs.D2P) << ' '
-          << obsToStr(obs.S2P) << ' '
+          << obsToStr(obs.S2P, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L2;
     }
     if (obs.has2C()) {
-      str << " 2X "
+      str << "  2X "
           << obsToStr(obs.C2)  << ' '  
           << obsToStr(obs.L2C) << ' '
           << obsToStr(obs.D2C) << ' ' 
-          << obsToStr(obs.S2C) << ' '
+          << obsToStr(obs.S2C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L2;
     }
     if (obs.has5C()) {
-      str << " 5C "
+      str << "  5C "
           << obsToStr(obs.C5)  << ' '
           << obsToStr(obs.L5)  << ' '
           << obsToStr(obs.D5)  << ' '
-          << obsToStr(obs.S5)  << ' '
+          << obsToStr(obs.S5, 8, 3)  << ' '
           << setw(2)  << obs.slip_cnt_L5;
     }
   }
   else if (obs.satSys == 'R') { // Glonass
-    str << ' ' << setw(2) << obs.slotNum;
     if (obs.has1C()) {
-      str << " 1C "
+      str << "  1C "
           << obsToStr(obs.C1)  << ' '  
           << obsToStr(obs.L1C) << ' '
           << obsToStr(obs.D1C) << ' '
-          << obsToStr(obs.S1C) << ' '
+          << obsToStr(obs.S1C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has1P()) {
-      str << " 1P "
+      str << "  1P "
           << obsToStr(obs.P1)  << ' '  
           << obsToStr(obs.L1P) << ' '
           << obsToStr(obs.D1P) << ' '
-          << obsToStr(obs.S1P) << ' '
+          << obsToStr(obs.S1P, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has2P()) {
-      str << " 2P "
+      str << "  2P "
           << obsToStr(obs.P2)  << ' '
           << obsToStr(obs.L2P) << ' '
           << obsToStr(obs.D2P) << ' '
-          << obsToStr(obs.S2P) << ' '
+          << obsToStr(obs.S2P, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L2;
     }
     if (obs.has2C()) {
-      str << " 2C "
+      str << "  2C "
           << obsToStr(obs.C2)  << ' '  
           << obsToStr(obs.L2C) << ' '
           << obsToStr(obs.D2C) << ' ' 
-          << obsToStr(obs.S2C) << ' '
+          << obsToStr(obs.S2C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L2;
     }
@@ -873,17 +881,17 @@
   else if (obs.satSys == 'S') { // SBAS
     if (obs.has1C()) {
-      str << " 1C "
+      str << "  1C "
           << obsToStr(obs.C1)  << ' '  
           << obsToStr(obs.L1C) << ' '
           << obsToStr(obs.D1C) << ' '
-          << obsToStr(obs.S1C) << ' '
+          << obsToStr(obs.S1C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has1P()) {
-      str << " 1W "
+      str << "  1W "
           << obsToStr(obs.P1)  << ' '  
           << obsToStr(obs.L1P) << ' '
           << obsToStr(obs.D1P) << ' '
-          << obsToStr(obs.S1P) << ' '
+          << obsToStr(obs.S1P, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
@@ -895,13 +903,13 @@
           << obsToStr(obs.L1C) << ' '
           << obsToStr(obs.D1C) << ' '
-          << obsToStr(obs.S1C) << ' '
+          << obsToStr(obs.S1C, 8, 3) << ' '
           << setw(2)  << obs.slip_cnt_L1;
     }
     if (obs.has5C()) {
-      str << " 5C "
+      str << "  5C "
           << obsToStr(obs.C5)  << ' '
           << obsToStr(obs.L5)  << ' '
           << obsToStr(obs.D5)  << ' '
-          << obsToStr(obs.S5)  << ' '
+          << obsToStr(obs.S5, 8, 3)  << ' '
           << setw(2)  << obs.slip_cnt_L5;
     }
Index: trunk/BNC/bncrinex.h
===================================================================
--- trunk/BNC/bncrinex.h	(revision 3343)
+++ trunk/BNC/bncrinex.h	(revision 3344)
@@ -59,4 +59,5 @@
 
    static std::string asciiSatLine(const t_obs& obs);
+   static std::string obsToStr(double val, int width = 14, int precision = 3);
 
  private:
