Index: branches/BNC_2.12/ChangeLog.txt
===================================================================
--- branches/BNC_2.12/ChangeLog.txt	(revision 8295)
+++ branches/BNC_2.12/ChangeLog.txt	(revision 8307)
@@ -7,4 +7,6 @@
     CHANGED (28.09.2017): Transformation of orbit and clock corrections into ETRF2000,
                           NDA83 or DREF91 is done temporarily via ITRF2008
+    FIXED   (22.03.2018): consideration of DF range 0-63 for SSR Satellite IDs as
+                          defined in DF463, DF466. First BDS or SBAS satellite is 0
     FIXED   (05.02.2018): Bug in latency checker
     FIXED   (13.12.2017): Galileo geocentric gravitational constant is corrected
Index: branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp	(revision 8295)
+++ branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp	(revision 8307)
@@ -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: branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 8295)
+++ branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 8307)
@@ -599,4 +599,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') {
@@ -1202,4 +1206,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;
@@ -2328,4 +2336,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;
