Index: /trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- /trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 8307)
+++ /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;
Index: /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 8307)
+++ /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 8308)
@@ -601,4 +601,8 @@
       if (biasSat) {
         biasSat->ID = prn.number();
+        if (prn.system() == 'C' ||
+            prn.system() == 'S') {
+          biasSat->ID--; // DF463 and DF466 with DF range 0-63, first satellite shall be 0
+        }
         biasSat->NumberOfCodeBiases = 0;
         if (prn.system() == 'G') {
@@ -1204,4 +1208,8 @@
         phasebias.MWConsistencyIndicator = mwConsistencyIndicator;
         phasebiasSat->ID = prn.number();
+        if (prn.system() == 'C' ||
+            prn.system() == 'S') {
+          phasebiasSat->ID--; // DF463 and DF466 with DF range 0-63, first satellite shall be 0
+        }
         phasebiasSat->NumberOfPhaseBiases = 0;
         phasebiasSat->YawAngle = pbSat.yawAngle;
@@ -2330,4 +2338,9 @@
   if (sd) {
     sd->ID = prn.mid(1).toInt();
+    char sys =  prn.mid(0,1).at(0).toLatin1();
+    if ( sys == 'C' || 
+         sys == 'S') {
+      sd->ID--;// DF463 and DF466 with DF range 0-63, first satellite shall be 0
+    }
     sd->IOD = eph->IOD();
     sd->Clock.DeltaA0 = dClk;
