Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 8252)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 8308)
@@ -275,5 +275,9 @@
 
       t_orbCorr orbCorr;
-      orbCorr._prn.set(sysCh, _clkOrb.Sat[ii].ID, flag);
+      int satID = _clkOrb.Sat[ii].ID;
+      if (sysCh == 'C' || sysCh == 'S') {
+        satID++;// DF463 and DF466 with DF range 0-63, first satellite shall be 0
+      }
+      orbCorr._prn.set(sysCh, satID, flag);
       orbCorr._staID     = _staID.toStdString();
       orbCorr._iod       = _clkOrb.Sat[ii].IOD;
@@ -309,6 +313,9 @@
 
       t_clkCorr clkCorr;
-      clkCorr._prn.set(sysCh, _clkOrb.Sat[ii].ID, flag);
-
+      int satID = _clkOrb.Sat[ii].ID;
+      if (sysCh == 'C' || sysCh == 'S') {
+        satID++;// DF463 and DF466 with DF range 0-63, first satellite shall be 0
+      }
+      clkCorr._prn.set(sysCh, satID, flag);
       clkCorr._staID      = _staID.toStdString();
       clkCorr._time       = _lastTime;
@@ -386,5 +393,9 @@
     }
     t_satCodeBias satCodeBias;
-    satCodeBias._prn.set(sysCh, _codeBias.Sat[ii].ID);
+    int satID = _codeBias.Sat[ii].ID;
+    if (sysCh == 'C' || sysCh == 'S') {
+      satID++;// DF463 and DF466 with DF range 0-63, first satellite shall be 0
+    }
+    satCodeBias._prn.set(sysCh, satID);
     satCodeBias._staID     = _staID.toStdString();
     satCodeBias._time      = _lastTime;
@@ -439,5 +450,9 @@
     }
     t_satPhaseBias satPhaseBias;
-    satPhaseBias._prn.set(sysCh, _phaseBias.Sat[ii].ID);
+    int satID = _phaseBias.Sat[ii].ID;
+    if (sysCh == 'C' || sysCh == 'S') {
+      satID++;// DF463 and DF466 with DF range 0-63, first satellite shall be 0
+    }
+    satPhaseBias._prn.set(sysCh, satID);
     satPhaseBias._staID      = _staID.toStdString();
     satPhaseBias._time       = _lastTime;
