Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 11030)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 11031)
@@ -2263,5 +2263,5 @@
       if ((id >= 1057 && id <= 1068) ||
           (id >= 1240 && id <= 1270) ||
-         // (id > 0     && id <= 100) ||
+          (id > 0     && id <= 100) ||
           (id == 4076)) {
         if (!_coDecoders.contains(_staID.toLatin1())) {
@@ -2271,6 +2271,6 @@
           }
           else {
-           // _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMnewssr);
-            _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMssr);
+            _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMnewssr);
+           // _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMssr);
           }
         }
Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11030)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 11031)
@@ -190,4 +190,5 @@
     struct SsrCorr::VTEC       vTECSav;
     struct SsrCorr::MetaData   metaDataSav;
+    struct SsrCorr::Antenna    antennaSav;
     // save state
     memcpy(&clkOrbSav,     &_clkOrb,    sizeof(clkOrbSav)); 
@@ -196,8 +197,9 @@
     memcpy(&vTECSav,       &_vTEC,      sizeof(vTECSav));
     memcpy(&metaDataSav,   &_metaData,  sizeof(metaDataSav));
+    memcpy(&antennaSav,    &_antenna,   sizeof(antennaSav));
 
     int bytesused = 0;
 
-    GCOB_RETURN irc = _ssrCorr->GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, &_metaData,
+    GCOB_RETURN irc = _ssrCorr->GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, &_metaData, &_antenna,
                                        _buffer.data(), _buffer.size(), &bytesused);
 
Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.h
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.h	(revision 11030)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.h	(revision 11031)
@@ -85,4 +85,5 @@
   SsrCorr::VTEC                         _vTEC;
   SsrCorr::MetaData                     _metaData;
+  SsrCorr::Antenna                      _antenna;
   int                                   _providerID[3];
   e_type                                _type;
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h	(revision 11031)
@@ -32,12 +32,14 @@
   CLOCKORBIT_NUMGLONASS = t_prn::MAXPRN_GLONASS,
   CLOCKORBIT_NUMGALILEO = t_prn::MAXPRN_GALILEO,
-  CLOCKORBIT_NUMQZSS = t_prn::MAXPRN_QZSS,
-  CLOCKORBIT_NUMSBAS = t_prn::MAXPRN_SBAS,
-  CLOCKORBIT_NUMBDS = t_prn::MAXPRN_BDS,
-  CLOCKORBIT_NUMBIAS = 150,
-  VTEC_NUMIONOLAYERS = 4,
-  VTEC_MAXIONOORDER = 16,
-  VTEC_MAXIONODEGREE = 16,
-  META_MAXNUMENTRIES = 7
+  CLOCKORBIT_NUMQZSS    = t_prn::MAXPRN_QZSS,
+  CLOCKORBIT_NUMSBAS    = t_prn::MAXPRN_SBAS,
+  CLOCKORBIT_NUMBDS     = t_prn::MAXPRN_BDS,
+  CLOCKORBIT_NUMBIAS    = 150,
+  VTEC_NUMIONOLAYERS    =   4,
+  VTEC_MAXIONOORDER     =  16,
+  VTEC_MAXIONODEGREE    =  16,
+  META_MAXNUMENTRIES    =   7,
+  ANT_MAXFREQUENCIES    =   6,
+  ANT_MAXNADIRDEGREES   =  40
 };
 
@@ -475,4 +477,25 @@
   };
 
+  struct Antenna {
+    unsigned int SSRProviderID;
+    unsigned int SatelliteAntennaIOD;
+    unsigned int PhaseCenterInformationIndicator;
+    unsigned int GroupDelayInformationIndicator;
+    unsigned int NadirAngleDependentCorrectionIndicator;
+    unsigned int maximumOffNadirAngle;
+    unsigned int NadirAngleDependentCorrectionRangeExtension;
+    unsigned int SatelliteSetIndicator;
+    unsigned int SatelliteMask;
+    struct SatellitePart {
+      unsigned int FrequencySetIndicator;
+      unsigned int GnssFrequencyMask;
+      struct FrequencyPart {
+        unsigned int NadirCorrectionIndicator;
+        int NadirCorrection;
+        int NadirAngleCorrection[ANT_MAXNADIRDEGREES];
+      } Freq[ANT_MAXFREQUENCIES];
+    } Sat[CLOCKORBIT_COUNTSAT];
+  } GNSS[CLOCKORBIT_SATNUM];
+
   /* return size of resulting data or 0 in case of an error */
   virtual size_t MakeClockOrbit(const struct ClockOrbit* co, CodeType type, int moremessagesfollow, char* buffer, size_t size) = 0;
@@ -482,7 +505,8 @@
   /* buffer should point to a RTCM3 block */
   virtual enum GCOB_RETURN GetSSR(struct ClockOrbit* co,
-    struct CodeBias* b, struct VTEC* v,
+    struct CodeBias* cb, struct VTEC* v,
     struct PhaseBias* pb,
     struct MetaData* md,
+    struct Antenna* a,
     const char* buffer, size_t size, int* bytesused) = 0;
 
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.cpp
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.cpp	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.cpp	(revision 11031)
@@ -205,5 +205,5 @@
 }
 
-size_t SsrCorrIgs::MakeCodeBias(const struct CodeBias *b, CodeBiasType type,
+size_t SsrCorrIgs::MakeCodeBias(const struct CodeBias *cb, CodeBiasType type,
     int moremessagesfollow, char *buffer, size_t size) {
   unsigned int s, i, j;
@@ -212,22 +212,22 @@
 
   for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
-    if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) {
+    if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) {
       INITBLOCK
 	    E_RTCM_MESSAGE_NUMBER(RTCM_MESSAGE_NUMBER_IGS)
       E_IGS_SSR_VERSION(IGS_SSR_VERSION)
 	    E_IGS_MESSAGE_NUMBER(corbase[s] + COBOFS_CBIAS)
-	    E_GPS_EPOCH_TIME(b->EpochTime[s])
-      E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+	    E_GPS_EPOCH_TIME(cb->EpochTime[s])
+      E_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
 	    E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-      E_SSR_IOD(b->SSRIOD)
-      E_SSR_PROVIDER_ID(b->SSRProviderID)
-      E_SSR_SOLUTION_ID(b->SSRSolutionID)
-      E_NO_OF_SATELLITES(b->NumberOfSat[s])
-      for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
-        E_GPS_SATELLITE_ID(b->Sat[i].ID)
-        E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases)
-        for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) {
-          E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-          E_CODE_BIAS(b->Sat[i].Biases[j].Bias)
+      E_SSR_IOD(cb->SSRIOD)
+      E_SSR_PROVIDER_ID(cb->SSRProviderID)
+      E_SSR_SOLUTION_ID(cb->SSRSolutionID)
+      E_NO_OF_SATELLITES(cb->NumberOfSat[s])
+      for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) {
+        E_GPS_SATELLITE_ID(cb->Sat[i].ID)
+        E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases)
+        for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) {
+          E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type)
+          E_CODE_BIAS(cb->Sat[i].Biases[j].Bias)
         }
       }
@@ -238,5 +238,5 @@
 }
 
-size_t SsrCorrIgs::MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type,
+size_t SsrCorrIgs::MakePhaseBias(const struct PhaseBias *pb, PhaseBiasType type,
     int moremessagesfollow, char *buffer, size_t size) {
   unsigned int s, i, j;
@@ -245,29 +245,29 @@
 
   for (s = 0; s < CLOCKORBIT_SATNUM; ++s)       {
-    if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corbase[s] + COBOFS_PBIAS)) {
+    if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corbase[s] + COBOFS_PBIAS)) {
       INITBLOCK
 	    E_RTCM_MESSAGE_NUMBER(RTCM_MESSAGE_NUMBER_IGS)
       E_IGS_SSR_VERSION(IGS_SSR_VERSION)
 	    E_IGS_MESSAGE_NUMBER(corbase[s] + COBOFS_PBIAS)
-	    E_GPS_EPOCH_TIME(b->EpochTime[s])
-      E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+	    E_GPS_EPOCH_TIME(pb->EpochTime[s])
+      E_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
 	    E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-      E_SSR_IOD(b->SSRIOD)
-      E_SSR_PROVIDER_ID(b->SSRProviderID)
-      E_SSR_SOLUTION_ID(b->SSRSolutionID)
-      E_DISPERSIVE_BIAS_INDICATOR(b->DispersiveBiasConsistencyIndicator ? 1 : 0)
-      E_MW_CONSISTENCY_INDICATOR(b->MWConsistencyIndicator ? 1 : 0)
-      E_NO_OF_SATELLITES(b->NumberOfSat[s])
-      for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
-        E_GPS_SATELLITE_ID(b->Sat[i].ID)
-        E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases)
-        E_YAW_ANGLE(b->Sat[i].YawAngle)
-        E_YAW_RATE(b->Sat[i].YawRate)
-        for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) {
-          E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-          E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
-          E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator)
-          E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter)
-          E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias)
+      E_SSR_IOD(pb->SSRIOD)
+      E_SSR_PROVIDER_ID(pb->SSRProviderID)
+      E_SSR_SOLUTION_ID(pb->SSRSolutionID)
+      E_DISPERSIVE_BIAS_INDICATOR(pb->DispersiveBiasConsistencyIndicator ? 1 : 0)
+      E_MW_CONSISTENCY_INDICATOR(pb->MWConsistencyIndicator ? 1 : 0)
+      E_NO_OF_SATELLITES(pb->NumberOfSat[s])
+      for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) {
+        E_GPS_SATELLITE_ID(pb->Sat[i].ID)
+        E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases)
+        E_YAW_ANGLE(pb->Sat[i].YawAngle)
+        E_YAW_RATE(pb->Sat[i].YawRate)
+        for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) {
+          E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type)
+          E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
+          E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator)
+          E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter)
+          E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias)
         }
       }
@@ -314,6 +314,6 @@
 }
 
-enum GCOB_RETURN SsrCorrIgs::GetSSR(struct ClockOrbit *co, struct CodeBias *b,struct VTEC *v,
-    struct PhaseBias *pb, struct MetaData *md, const char *buffer, size_t size, int *bytesused) {
+enum GCOB_RETURN SsrCorrIgs::GetSSR(struct ClockOrbit *co, struct CodeBias *cb,struct VTEC *v,
+    struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, const char *buffer, size_t size, int *bytesused) {
   int mmi = 0, h, rs;
   unsigned int igstype, pos, i, j, s, nums, id;
@@ -617,41 +617,41 @@
       }
       else if (corrOffset == COBOFS_CBIAS) {
-          if (!b)
+          if (!cb)
             return GCOBR_NOCODEBIASPARAMETER;
-          b->messageType = igstype;
-          D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s])
-          D_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          cb->messageType = igstype;
+          D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s])
+          D_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
           D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-          D_SSR_IOD(b->SSRIOD)
-          D_SSR_PROVIDER_ID(b->SSRProviderID)
-          D_SSR_SOLUTION_ID(b->SSRSolutionID)
+          D_SSR_IOD(cb->SSRIOD)
+          D_SSR_PROVIDER_ID(cb->SSRProviderID)
+          D_SSR_SOLUTION_ID(cb->SSRSolutionID)
           D_NO_OF_SATELLITES(nums)
 #ifdef BNC_DEBUG_SSR
           fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
-        		  b->EpochTime[s], b->UpdateInterval,mmi,b->NumberOfSat[s],nums,
-				  b->SSRIOD, b->SSRProviderID, b->SSRSolutionID);
+        		  cb->EpochTime[s], cb->UpdateInterval,mmi,cb->NumberOfSat[s],nums,
+				  cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID);
 #endif
           for (i = 0; i < nums; ++i) {
             D_GPS_SATELLITE_ID(id)
             for (pos = satoffset[s];
-                pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id;
+                pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id;
                 ++pos)
               ;
             if (pos >= satoffset[s + 1])
               return GCOBR_DATAMISMATCH;
-            else if (pos == b->NumberOfSat[s] + satoffset[s])
-              ++b->NumberOfSat[s];
-            b->Sat[pos].ID = id;
-            D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases)
+            else if (pos == cb->NumberOfSat[s] + satoffset[s])
+              ++cb->NumberOfSat[s];
+            cb->Sat[pos].ID = id;
+            D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases)
 #ifdef BNC_DEBUG_SSR
             fprintf(stderr, "id %2d #%d ",
-                    b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases);
-#endif
-            for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) {
-              D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type)
-              D_CODE_BIAS(b->Sat[pos].Biases[j].Bias)
+                    cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases);
+#endif
+            for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) {
+              D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type)
+              D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias)
 #ifdef BNC_DEBUG_SSR
             fprintf(stderr, "t%02d b %8.2f ",
-                    b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias);
+                    cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias);
 #endif
             }
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h	(revision 11031)
@@ -221,16 +221,13 @@
    SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type);
 
-   size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type,
-       int moremessagesfollow, char *buffer, size_t size);
-   size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type,
-       int moremessagesfollow, char *buffer, size_t size);
-   size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type,
-       int moremessagesfollow, char *buffer, size_t size);
-   size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer,
-       size_t size);
-   enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b,
-       struct VTEC *v, struct PhaseBias *pb, struct MetaData *md, 
-       const char *buffer, size_t size, int *bytesused);
-};
+  size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size);
+  enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 
+                          struct PhaseBias *pb, struct MetaData *md, struct Antenna* a,
+                          const char *buffer, size_t size, int *bytesused);
+ };
 
 #endif /* RTCM3_CLOCK_ORBIT_IGS_H */
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp	(revision 11031)
@@ -345,5 +345,5 @@
 }
 
-size_t SsrCorrRtcm::MakeCodeBias(const struct CodeBias *b, CodeBiasType type,
+size_t SsrCorrRtcm::MakeCodeBias(const struct CodeBias *cb, CodeBiasType type,
     int moremessagesfollow, char *buffer, size_t size) {
   unsigned int s, i, j;
@@ -352,5 +352,5 @@
 
   for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
-    if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) {
+    if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) {
       INITBLOCK
       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_CBIAS)
@@ -361,17 +361,17 @@
         case CLOCKORBIT_SATSBAS:
         case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(b->EpochTime[s])
+          E_GPS_EPOCH_TIME(cb->EpochTime[s])
           break;
         case CLOCKORBIT_SATGLONASS:
-          E_GLONASS_EPOCH_TIME(b->EpochTime[s])
-          break;
-      }
-      E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          E_GLONASS_EPOCH_TIME(cb->EpochTime[s])
+          break;
+      }
+      E_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
       E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-      E_SSR_IOD(b->SSRIOD)
-      E_SSR_PROVIDER_ID(b->SSRProviderID)
-      E_SSR_SOLUTION_ID(b->SSRSolutionID)
-      E_NO_OF_SATELLITES(b->NumberOfSat[s])
-      for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
+      E_SSR_IOD(cb->SSRIOD)
+      E_SSR_PROVIDER_ID(cb->SSRProviderID)
+      E_SSR_SOLUTION_ID(cb->SSRSolutionID)
+      E_NO_OF_SATELLITES(cb->NumberOfSat[s])
+      for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) {
         switch (s) {
           case CLOCKORBIT_SATGPS:
@@ -379,17 +379,17 @@
           case CLOCKORBIT_SATSBAS:
           case CLOCKORBIT_SATBDS:
-            E_GPS_SATELLITE_ID(b->Sat[i].ID)
+            E_GPS_SATELLITE_ID(cb->Sat[i].ID)
             break;
           case CLOCKORBIT_SATQZSS:
-            E_QZSS_SATELLITE_ID_OLD(b->Sat[i].ID)
+            E_QZSS_SATELLITE_ID_OLD(cb->Sat[i].ID)
             break;
           case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_SATELLITE_ID(b->Sat[i].ID)
+            E_GLONASS_SATELLITE_ID(cb->Sat[i].ID)
             break;
         }
-        E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases)
-        for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) {
-          E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-          E_CODE_BIAS(b->Sat[i].Biases[j].Bias)
+        E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases)
+        for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) {
+          E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type)
+          E_CODE_BIAS(cb->Sat[i].Biases[j].Bias)
         }
       }
@@ -400,5 +400,5 @@
 }
 
-size_t SsrCorrRtcm::MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type,
+size_t SsrCorrRtcm::MakePhaseBias(const struct PhaseBias *pb, PhaseBiasType type,
     int moremessagesfollow, char *buffer, size_t size) {
   unsigned int s, i, j;
@@ -407,5 +407,5 @@
 
   for (s = 0; s < CLOCKORBIT_SATNUM; ++s)       {
-    if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == s + PBTYPE_BASE)) {
+    if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == s + PBTYPE_BASE)) {
       INITBLOCK
       E_RTCM_MESSAGE_NUMBER(s + PBTYPE_BASE)
@@ -416,19 +416,19 @@
         case CLOCKORBIT_SATSBAS:
         case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(b->EpochTime[s])
+          E_GPS_EPOCH_TIME(pb->EpochTime[s])
           break;
         case CLOCKORBIT_SATGLONASS:
-          E_GLONASS_EPOCH_TIME(b->EpochTime[s])
-          break;
-      }
-      E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          E_GLONASS_EPOCH_TIME(pb->EpochTime[s])
+          break;
+      }
+      E_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
       E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-      E_SSR_IOD(b->SSRIOD)
-      E_SSR_PROVIDER_ID(b->SSRProviderID)
-      E_SSR_SOLUTION_ID(b->SSRSolutionID)
-      E_DISPERSIVE_BIAS_INDICATOR(b->DispersiveBiasConsistencyIndicator ? 1 : 0)
-      E_MW_CONSISTENCY_INDICATOR(b->MWConsistencyIndicator ? 1 : 0)
-      E_NO_OF_SATELLITES(b->NumberOfSat[s])
-      for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
+      E_SSR_IOD(pb->SSRIOD)
+      E_SSR_PROVIDER_ID(pb->SSRProviderID)
+      E_SSR_SOLUTION_ID(pb->SSRSolutionID)
+      E_DISPERSIVE_BIAS_INDICATOR(pb->DispersiveBiasConsistencyIndicator ? 1 : 0)
+      E_MW_CONSISTENCY_INDICATOR(pb->MWConsistencyIndicator ? 1 : 0)
+      E_NO_OF_SATELLITES(pb->NumberOfSat[s])
+      for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) {
         switch (s) {
           case CLOCKORBIT_SATGPS:
@@ -436,22 +436,22 @@
             case CLOCKORBIT_SATSBAS:
             case CLOCKORBIT_SATBDS:
-            E_GPS_SATELLITE_ID(b->Sat[i].ID)
+            E_GPS_SATELLITE_ID(pb->Sat[i].ID)
             break;
           case CLOCKORBIT_SATQZSS:
-            E_QZSS_SATELLITE_ID_OLD(b->Sat[i].ID)
+            E_QZSS_SATELLITE_ID_OLD(pb->Sat[i].ID)
             break;
           case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_SATELLITE_ID(b->Sat[i].ID)
+            E_GLONASS_SATELLITE_ID(pb->Sat[i].ID)
             break;
         }
-        E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases)
-        E_YAW_ANGLE(b->Sat[i].YawAngle)
-        E_YAW_RATE(b->Sat[i].YawRate)
-        for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) {
-          E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-          E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
-          E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator)
-          E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter)
-          E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias)
+        E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases)
+        E_YAW_ANGLE(pb->Sat[i].YawAngle)
+        E_YAW_RATE(pb->Sat[i].YawRate)
+        for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) {
+          E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type)
+          E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
+          E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator)
+          E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter)
+          E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias)
         }
       }
@@ -495,6 +495,6 @@
 }
 
-enum GCOB_RETURN SsrCorrRtcm::GetSSR(struct ClockOrbit *co, struct CodeBias *b,struct VTEC *v,
-    struct PhaseBias *pb, struct MetaData *md, const char *buffer, size_t size, int *bytesused) {
+enum GCOB_RETURN SsrCorrRtcm::GetSSR(struct ClockOrbit *co, struct CodeBias *cb,struct VTEC *v,
+    struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, const char *buffer, size_t size, int *bytesused) {
   int mmi = 0, h, rs;
   unsigned int type, pos, i, j, s, nums, id;
@@ -1049,7 +1049,7 @@
       }
       else if (corrOffset ==  COBOFS_CBIAS) {
-          if (!b)
+          if (!cb)
             return GCOBR_NOCODEBIASPARAMETER;
-          b->messageType = type;
+          cb->messageType = type;
           switch (s) {
             case CLOCKORBIT_SATGPS:
@@ -1058,20 +1058,20 @@
             case CLOCKORBIT_SATSBAS:
             case CLOCKORBIT_SATBDS:
-              D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s])
+              D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s])
               break;
             case CLOCKORBIT_SATGLONASS:
-              D_GLONASS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s])
+              D_GLONASS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s])
               break;
           }
-          D_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          D_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
           D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-          D_SSR_IOD(b->SSRIOD)
-          D_SSR_PROVIDER_ID(b->SSRProviderID)
-          D_SSR_SOLUTION_ID(b->SSRSolutionID)
+          D_SSR_IOD(cb->SSRIOD)
+          D_SSR_PROVIDER_ID(cb->SSRProviderID)
+          D_SSR_SOLUTION_ID(cb->SSRSolutionID)
           D_NO_OF_SATELLITES(nums)
 #ifdef BNC_DEBUG_SSR
           fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
-        		  b->EpochTime[s], b->UpdateInterval,mmi,b->NumberOfSat[s],nums,
-				  b->SSRIOD, b->SSRProviderID, b->SSRSolutionID);
+        		  cb->EpochTime[s], cb->UpdateInterval,mmi,cb->NumberOfSat[s],nums,
+				  cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID);
 #endif
           for (i = 0; i < nums; ++i) {
@@ -1091,23 +1091,23 @@
             }
             for (pos = satoffset[s];
-                pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id;
+                 pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id;
                 ++pos)
               ;
             if (pos >= satoffset[s + 1])
               return GCOBR_DATAMISMATCH;
-            else if (pos == b->NumberOfSat[s] + satoffset[s])
-              ++b->NumberOfSat[s];
-            b->Sat[pos].ID = id;
-            D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases)
+            else if (pos == cb->NumberOfSat[s] + satoffset[s])
+              ++cb->NumberOfSat[s];
+            cb->Sat[pos].ID = id;
+            D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases)
 #ifdef BNC_DEBUG_SSR
             fprintf(stderr, "id %2d #%d ",
-                    b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases);
-#endif
-            for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) {
-              D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type)
-              D_CODE_BIAS(b->Sat[pos].Biases[j].Bias)
+                    cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases);
+#endif
+            for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) {
+              D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type)
+              D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias)
 #ifdef BNC_DEBUG_SSR
             fprintf(stderr, "t%02d b %8.2f ",
-                    b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias);
+                    cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias);
 #endif
             }
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 11031)
@@ -220,17 +220,14 @@
   SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type);
 
-  size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type,
-      int moremessagesfollow, char *buffer, size_t size);
-  size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type,
-      int moremessagesfollow, char *buffer, size_t size);
-  size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type,
-      int moremessagesfollow, char *buffer, size_t size);
-  size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer,
-      size_t size);
-  enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b,
-      struct VTEC *v, struct PhaseBias *pb, struct MetaData *md, 
-      const char *buffer, size_t size,
-      int *bytesused);
+  size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size);
+  size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size);
+  enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 
+                          struct PhaseBias *pb, struct MetaData *md, struct Antenna* a,
+                          const char *buffer, size_t size, int *bytesused);
  };
 
+
 #endif /* RTCM3_CLOCK_ORBIT_RTCM_H */
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp	(revision 11031)
@@ -70,16 +70,16 @@
         E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_ORBIT])
         switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATGALILEO:
-        case CLOCKORBIT_SATQZSS:
-        case CLOCKORBIT_SATSBAS:
-        case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        case CLOCKORBIT_SATGLONASS:
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATGALILEO:
+          case CLOCKORBIT_SATQZSS:
+          case CLOCKORBIT_SATSBAS:
+          case CLOCKORBIT_SATBDS:
+            E_GPS_EPOCH_TIME(co->EpochTime[s])
+            break;
+          case CLOCKORBIT_SATGLONASS:
           E_GLONASS_EPOCH_TIME(co->EpochTime[s])
             break;
         }
-      E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+        E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
         E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
         E_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
@@ -90,36 +90,36 @@
         for (i = satoffset[s]; i < satoffset[s] + co->NumberOfSat[s]; ++i) {
           switch (s) {
-          case CLOCKORBIT_SATGPS:
-            E_GPS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATGPS:
+              E_GPS_SATELLITE_ID(co->Sat[i].ID)
               E_GPS_IODE(co->Sat[i].IOD)
               break;
-          case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATGLONASS:
+              E_GLONASS_SATELLITE_ID(co->Sat[i].ID)
               E_GLONASS_IOD(co->Sat[i].IOD)
               break;
-          case CLOCKORBIT_SATGALILEO:
-            E_GPS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATGALILEO:
+              E_GPS_SATELLITE_ID(co->Sat[i].ID)
               E_GALILEO_IOD(co->Sat[i].IOD)
               break;
-          case CLOCKORBIT_SATQZSS:
-            E_QZSS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATQZSS:
+              E_QZSS_SATELLITE_ID(co->Sat[i].ID)
               E_GPS_IODE(co->Sat[i].IOD)
               break;
-          case CLOCKORBIT_SATSBAS:
-            E_GPS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATSBAS:
+              E_GPS_SATELLITE_ID(co->Sat[i].ID)
               E_SBAS_T0MOD(co->Sat[i].toe)
               E_SBAS_IODCRC(co->Sat[i].IOD)
               break;
-          case CLOCKORBIT_SATBDS:
-            E_GPS_SATELLITE_ID(co->Sat[i].ID)
+            case CLOCKORBIT_SATBDS:
+              E_GPS_SATELLITE_ID(co->Sat[i].ID)
               E_BDS_IOD(co->Sat[i].IOD)
               break;
           }
           E_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
-            E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
-            E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
-            E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
-            E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
-            E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
+          E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
+          E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
+          E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
+          E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
+          E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
         }
       ENDBLOCK
@@ -129,16 +129,16 @@
         E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CLOCK])
         switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATGALILEO:
-        case CLOCKORBIT_SATQZSS:
-        case CLOCKORBIT_SATSBAS:
-        case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        case CLOCKORBIT_SATGLONASS:
-          E_GLONASS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        }
-      E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATGALILEO:
+          case CLOCKORBIT_SATQZSS:
+          case CLOCKORBIT_SATSBAS:
+          case CLOCKORBIT_SATBDS:
+            E_GPS_EPOCH_TIME(co->EpochTime[s])
+            break;
+          case CLOCKORBIT_SATGLONASS:
+            E_GLONASS_EPOCH_TIME(co->EpochTime[s])
+            break;
+        }
+        E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
         E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
         E_SSR_IOD(co->SSRIOD)
@@ -148,7 +148,7 @@
         for (i = satoffset[s]; i < satoffset[s] + co->NumberOfSat[s]; ++i) {
           E_GPS_SATELLITE_ID(co->Sat[i].ID)
-            E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
-            E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
-            E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
+          E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
+          E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
+          E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
         }
       ENDBLOCK
@@ -170,16 +170,16 @@
           E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_COMBINED])
           switch (s) {
-          case CLOCKORBIT_SATGPS:
-          case CLOCKORBIT_SATGALILEO:
-          case CLOCKORBIT_SATQZSS:
-          case CLOCKORBIT_SATSBAS:
-          case CLOCKORBIT_SATBDS:
-            E_GPS_EPOCH_TIME(co->EpochTime[s])
-              break;
-          case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_EPOCH_TIME(co->EpochTime[s])
+            case CLOCKORBIT_SATGPS:
+            case CLOCKORBIT_SATGALILEO:
+            case CLOCKORBIT_SATQZSS:
+            case CLOCKORBIT_SATSBAS:
+            case CLOCKORBIT_SATBDS:
+              E_GPS_EPOCH_TIME(co->EpochTime[s])
+             break;
+            case CLOCKORBIT_SATGLONASS:
+              E_GLONASS_EPOCH_TIME(co->EpochTime[s])
               break;
           }
-        E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+          E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
 #ifdef SPLITBLOCK
           E_MULTIPLE_MESSAGE_INDICATOR((moremessagesfollow || left) ? 1 : 0)
@@ -200,39 +200,39 @@
           {
             switch (s) {
-            case CLOCKORBIT_SATGPS:
-              E_GPS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATGPS:
+                E_GPS_SATELLITE_ID(co->Sat[i].ID)
                 E_GPS_IODE(co->Sat[i].IOD)
                 break;
-            case CLOCKORBIT_SATGLONASS:
-              E_GLONASS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATGLONASS:
+                E_GLONASS_SATELLITE_ID(co->Sat[i].ID)
                 E_GLONASS_IOD(co->Sat[i].IOD)
                 break;
-            case CLOCKORBIT_SATGALILEO:
-              E_GPS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATGALILEO:
+                E_GPS_SATELLITE_ID(co->Sat[i].ID)
                 E_GALILEO_IOD(co->Sat[i].IOD)
                 break;
-            case CLOCKORBIT_SATQZSS:
-              E_QZSS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATQZSS:
+                E_QZSS_SATELLITE_ID(co->Sat[i].ID)
                 E_GPS_IODE(co->Sat[i].IOD)
                 break;
-            case CLOCKORBIT_SATSBAS:
-              E_GPS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATSBAS:
+                E_GPS_SATELLITE_ID(co->Sat[i].ID)
                 E_SBAS_T0MOD(co->Sat[i].toe)
                 E_SBAS_IODCRC(co->Sat[i].IOD)
                 break;
-            case CLOCKORBIT_SATBDS:
-              E_GPS_SATELLITE_ID(co->Sat[i].ID)
+              case CLOCKORBIT_SATBDS:
+                E_GPS_SATELLITE_ID(co->Sat[i].ID)
                 E_BDS_IOD(co->Sat[i].IOD)
                 break;
             }
             E_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial)
-              E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
-              E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
-              E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
-              E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
-              E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
-              E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
-              E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
-              E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
+            E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)
+            E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)
+            E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)
+            E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)
+            E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)
+            E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)
+            E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)
+            E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)
           }
         ENDBLOCK
@@ -247,17 +247,17 @@
       INITBLOCK
         E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_HR])
-        switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATGALILEO:
-        case CLOCKORBIT_SATQZSS:
-        case CLOCKORBIT_SATSBAS:
-        case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        case CLOCKORBIT_SATGLONASS:
-          E_GLONASS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        }
-      E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+       switch (s) {
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATGALILEO:
+          case CLOCKORBIT_SATQZSS:
+          case CLOCKORBIT_SATSBAS:
+          case CLOCKORBIT_SATBDS:
+            E_GPS_EPOCH_TIME(co->EpochTime[s])
+            break;
+          case CLOCKORBIT_SATGLONASS:
+            E_GLONASS_EPOCH_TIME(co->EpochTime[s])
+            break;
+        }
+        E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
         E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
         E_SSR_IOD(co->SSRIOD)
@@ -275,16 +275,16 @@
         E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_URA])
         switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATGALILEO:
-        case CLOCKORBIT_SATQZSS:
-        case CLOCKORBIT_SATSBAS:
-        case CLOCKORBIT_SATBDS:
-          E_GPS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        case CLOCKORBIT_SATGLONASS:
-          E_GLONASS_EPOCH_TIME(co->EpochTime[s])
-            break;
-        }
-      E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATGALILEO:
+          case CLOCKORBIT_SATQZSS:
+          case CLOCKORBIT_SATSBAS:
+          case CLOCKORBIT_SATBDS:
+            E_GPS_EPOCH_TIME(co->EpochTime[s])
+            break;
+          case CLOCKORBIT_SATGLONASS:
+            E_GLONASS_EPOCH_TIME(co->EpochTime[s])
+            break;
+        }
+        E_SSR_UPDATE_INTERVAL(co->UpdateInterval)
         E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
         E_SSR_IOD(co->SSRIOD)
@@ -302,5 +302,5 @@
 }
 
-size_t SsrCorrRtcmNew::MakeCodeBias(const struct CodeBias* b, CodeBiasType type,
+size_t SsrCorrRtcmNew::MakeCodeBias(const struct CodeBias* cb, CodeBiasType type,
   int moremessagesfollow, char* buffer, size_t size) {
   unsigned int s, i, j;
@@ -309,32 +309,32 @@
 
     for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
-      if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corType[s][COBOFS_CBIAS])) {
+      if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corType[s][COBOFS_CBIAS])) {
         INITBLOCK
           E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CBIAS])
           switch (s) {
-          case CLOCKORBIT_SATGPS:
-          case CLOCKORBIT_SATGALILEO:
-          case CLOCKORBIT_SATQZSS:
-          case CLOCKORBIT_SATSBAS:
-          case CLOCKORBIT_SATBDS:
-            E_GPS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGPS:
+            case CLOCKORBIT_SATGALILEO:
+            case CLOCKORBIT_SATQZSS:
+            case CLOCKORBIT_SATSBAS:
+            case CLOCKORBIT_SATBDS:
+              E_GPS_EPOCH_TIME(cb->EpochTime[s])
               break;
-          case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGLONASS:
+              E_GLONASS_EPOCH_TIME(cb->EpochTime[s])
               break;
           }
-        E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          E_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
           E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-          E_SSR_IOD(b->SSRIOD)
-          E_SSR_PROVIDER_ID(b->SSRProviderID)
-          E_SSR_SOLUTION_ID(b->SSRSolutionID)
-          E_NO_OF_SATELLITES(b->NumberOfSat[s])
-          for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
-            E_GPS_SATELLITE_ID(b->Sat[i].ID)
-              E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases)
-              for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) {
-                E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-                  E_CODE_BIAS(b->Sat[i].Biases[j].Bias)
-              }
+          E_SSR_IOD(cb->SSRIOD)
+          E_SSR_PROVIDER_ID(cb->SSRProviderID)
+          E_SSR_SOLUTION_ID(cb->SSRSolutionID)
+          E_NO_OF_SATELLITES(cb->NumberOfSat[s])
+          for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) {
+            E_GPS_SATELLITE_ID(cb->Sat[i].ID)
+            E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases)
+            for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) {
+              E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type)
+              E_CODE_BIAS(cb->Sat[i].Biases[j].Bias)
+            }
           }
         ENDBLOCK
@@ -344,5 +344,5 @@
 }
 
-size_t SsrCorrRtcmNew::MakePhaseBias(const struct PhaseBias* b, PhaseBiasType type,
+size_t SsrCorrRtcmNew::MakePhaseBias(const struct PhaseBias* pb, PhaseBiasType type,
   int moremessagesfollow, char* buffer, size_t size) {
   unsigned int s, i, j;
@@ -352,39 +352,39 @@
     for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
       /* Satellite Phase Bias Message */
-      if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corType[s][COBOFS_PBIAS])) {
+      if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corType[s][COBOFS_PBIAS])) {
         INITBLOCK
           E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBIAS])
           switch (s) {
-          case CLOCKORBIT_SATGPS:
-          case CLOCKORBIT_SATGALILEO:
-          case CLOCKORBIT_SATQZSS:
-          case CLOCKORBIT_SATSBAS:
-          case CLOCKORBIT_SATBDS:
-            E_GPS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGPS:
+            case CLOCKORBIT_SATGALILEO:
+            case CLOCKORBIT_SATQZSS:
+            case CLOCKORBIT_SATSBAS:
+            case CLOCKORBIT_SATBDS:
+              E_GPS_EPOCH_TIME(pb->EpochTime[s])
               break;
-          case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGLONASS:
+              E_GLONASS_EPOCH_TIME(pb->EpochTime[s])
               break;
           }
-        E_SSR_UPDATE_INTERVAL(b->UpdateInterval)
+          E_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
           E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-          E_SSR_IOD(b->SSRIOD)
-          E_SSR_PROVIDER_ID(b->SSRProviderID)
-          E_SSR_SOLUTION_ID(b->SSRSolutionID)
-          E_YAW_INFO_INDICATOR(b->SatelliteYawInformationIndicator)
-          E_EXTENDED_PHASE_BIAS_ID(b->ExtendedPhaseBiasPropertyID)
-          E_NO_OF_SATELLITES(b->NumberOfSat[s])
-          for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
-            E_GPS_SATELLITE_ID(b->Sat[i].ID)
-              E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases)
-              if (b->SatelliteYawInformationIndicator) {
-                E_YAW_ANGLE(b->Sat[i].YawAngle)
-                  E_YAW_RATE(b->Sat[i].YawRate)
-              }
-            for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) {
-              E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
-                E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
-                E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter)
-                E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias)
+          E_SSR_IOD(pb->SSRIOD)
+          E_SSR_PROVIDER_ID(pb->SSRProviderID)
+          E_SSR_SOLUTION_ID(pb->SSRSolutionID)
+          E_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)
+          E_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
+          E_NO_OF_SATELLITES(pb->NumberOfSat[s])
+          for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) {
+            E_GPS_SATELLITE_ID(pb->Sat[i].ID)
+            E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases)
+            if (pb->SatelliteYawInformationIndicator) {
+              E_YAW_ANGLE(pb->Sat[i].YawAngle)
+              E_YAW_RATE(pb->Sat[i].YawRate)
+            }
+            for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) {
+              E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type)
+              E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)
+              E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter)
+              E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias)
             }
           }
@@ -396,26 +396,26 @@
          Extended Satellite Phase Bias Message shall be sent BEFORE the corresponding
          Satellite Phase Bias Message VICE VERSA??*/
-      if (b->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == corType[s][COBOFS_PBEXT])) {
+      if (pb->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == corType[s][COBOFS_PBEXT])) {
         INITBLOCK
           E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBEXT])
           switch (s) {
-          case CLOCKORBIT_SATGPS:
-          case CLOCKORBIT_SATGALILEO:
-          case CLOCKORBIT_SATQZSS:
-          case CLOCKORBIT_SATSBAS:
-          case CLOCKORBIT_SATBDS:
-            E_GPS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGPS:
+            case CLOCKORBIT_SATGALILEO:
+            case CLOCKORBIT_SATQZSS:
+            case CLOCKORBIT_SATSBAS:
+            case CLOCKORBIT_SATBDS:
+              E_GPS_EPOCH_TIME(pb->EpochTime[s])
               break;
-          case CLOCKORBIT_SATGLONASS:
-            E_GLONASS_EPOCH_TIME(b->EpochTime[s])
+            case CLOCKORBIT_SATGLONASS:
+              E_GLONASS_EPOCH_TIME(pb->EpochTime[s])
               break;
           }
-        E_SSR_IOD(b->SSRIOD)
-          E_SSR_PROVIDER_ID(b->SSRProviderID)
-          E_SSR_SOLUTION_ID(b->SSRSolutionID)
-          E_EXTENDED_PHASE_BIAS_ID(b->ExtendedPhaseBiasPropertyID)
-          for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) {
-            for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) {
-              E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator)
+          E_SSR_IOD(pb->SSRIOD)
+          E_SSR_PROVIDER_ID(pb->SSRProviderID)
+          E_SSR_SOLUTION_ID(pb->SSRSolutionID)
+          E_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
+          for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) {
+            for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) {
+              E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator)
             }
           }
@@ -431,15 +431,15 @@
   STARTDATA
     INITBLOCK
-    E_RTCM_MESSAGE_NUMBER(VTEC_BASE)
-    E_GPS_EPOCH_TIME(v->EpochTime)
-    E_SSR_UPDATE_INTERVAL(v->UpdateInterval)
-    E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
-    E_SSR_IOD(v->SSRIOD)
-    E_SSR_PROVIDER_ID(v->SSRProviderID)
-    E_SSR_SOLUTION_ID(v->SSRSolutionID)
-    E_VTEC_QUALITY_INDICATOR(v->Quality)
-    E_NO_IONO_LAYERS(v->NumLayers)
-    for (l = 0; l < v->NumLayers; ++l) {
-      E_IONO_HEIGHT(v->Layers[l].Height)
+      E_RTCM_MESSAGE_NUMBER(VTEC_BASE)
+      E_GPS_EPOCH_TIME(v->EpochTime)
+      E_SSR_UPDATE_INTERVAL(v->UpdateInterval)
+      E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0)
+      E_SSR_IOD(v->SSRIOD)
+      E_SSR_PROVIDER_ID(v->SSRProviderID)
+      E_SSR_SOLUTION_ID(v->SSRSolutionID)
+      E_VTEC_QUALITY_INDICATOR(v->Quality)
+      E_NO_IONO_LAYERS(v->NumLayers)
+      for (l = 0; l < v->NumLayers; ++l) {
+        E_IONO_HEIGHT(v->Layers[l].Height)
         E_IONO_DEGREE(v->Layers[l].Degree)
         E_IONO_ORDER(v->Layers[l].Order)
@@ -459,6 +459,42 @@
 }
 
-enum GCOB_RETURN SsrCorrRtcmNew::GetSSR(struct ClockOrbit* co, struct CodeBias* b, struct VTEC* v,
-  struct PhaseBias* pb, struct MetaData* md, const char* buffer, size_t size, int* bytesused) {
+size_t SsrCorrRtcmNew::MakeMetaData(const struct MetaData* md, char* buffer, size_t size) {
+  unsigned int i;
+
+  STARTDATA
+    INITBLOCK
+      E_RTCM_MESSAGE_NUMBER(METADATATYPE_BASE)
+      E_SSR_IOD(md->SSRIOD)
+      E_SSR_PROVIDER_ID(md->SSRProviderID)
+      E_SSR_SOLUTION_ID(md->SSRSolutionID)
+      E_NUMBER_OF_SSR_MODEL_CORRECTION_ENTRIES(md->NumEntries)
+      for (i = 0; i < md->NumEntries; i++) {
+        E_MODEL_CORRECTION_TYPE_INDICATOR(md->Entries[i].TypeIndicator)
+        E_ADDITIONAL_MODEL_PARAMETER_INDICATOR(md->Entries[i].ApplicationIndicator)
+        E_NON_DEFAULT_MODEL_CORRECTION_INDICATOR(md->Entries[i].nonDefaultIndicator)
+        if (md->Entries[i].nonDefaultIndicator) {
+          E_NON_DEFAULT_MODEL_CORRECTION_IDENTIFIER(md->Entries[i].nonDefaultIdentifier)
+        }
+        E_MODEL_CORRECTION_DATA_IOD_INDICATOR(md->Entries[i].DataIODIndicator)     
+        if (md->Entries[i].DataIODIndicator) {
+          E_MODEL_CORRECTION_DATA_IOD(md->Entries[i].DataIOD)     
+        }
+        if (md->Entries[i].nonDefaultIndicator) {
+          E_ADDITIONAL_MODEL_PARAMETER_INDICATOR(md->Entries[i].additionalParameterIndicator)
+        }
+        if (md->Entries[i].additionalParameterIndicator) {
+          E_NUMBER_OF_ADDITIONAL_MODEL_PARAMETER_BITS(md->Entries[i].additionalParameterNumBits)    
+        }
+        if (md->Entries[i].nonDefaultIndicator &&
+            md->Entries[i].additionalParameterIndicator) {
+          E_ADDITIONAL_MODEL_PARAMETER_DATA(md->Entries[i].additionalParameterData, md->Entries[i].additionalParameterNumBits)       
+      }
+    }
+  ENDBLOCK
+    return ressize;
+}
+
+enum GCOB_RETURN SsrCorrRtcmNew::GetSSR(struct ClockOrbit* co, struct CodeBias* cb, struct VTEC* v,
+  struct PhaseBias* pb, struct MetaData* md, struct Antenna* a, const char* buffer, size_t size, int* bytesused) {
   int mmi = 0, h, rs;
   unsigned int type, pos, i, j, s, nums, id;
@@ -597,25 +633,25 @@
       pb->NumberOfSat[s] = 0;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME(pb->EpochTime[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME(pb->EpochTime[s])
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME(pb->EpochTime[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME(pb->EpochTime[s])
           break;
       }
       D_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SSR_IOD(pb->SSRIOD)
-        D_SSR_PROVIDER_ID(pb->SSRProviderID)
-        D_SSR_SOLUTION_ID(pb->SSRSolutionID)
-        D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)
-        D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
-        D_NO_OF_SATELLITES(nums)
-#ifdef BNC_DEBUG_SSR
-        fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d yawInd %d extpbInd %d\n",
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SSR_IOD(pb->SSRIOD)
+      D_SSR_PROVIDER_ID(pb->SSRProviderID)
+      D_SSR_SOLUTION_ID(pb->SSRSolutionID)
+      D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)
+      D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
+      D_NO_OF_SATELLITES(nums)
+#ifdef BNC_DEBUG_SSR
+      fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d yawInd %d extpbInd %d\n",
         pb->EpochTime[s], pb->UpdateInterval, mmi, pb->NumberOfSat[s], nums,
         pb->SSRIOD, pb->SSRProviderID, pb->SSRSolutionID,
@@ -625,5 +661,5 @@
       for (i = 0; i < nums; ++i) {
         D_GPS_SATELLITE_ID(id)
-          for (pos = satoffset[s];
+        for (pos = satoffset[s];
           pos < satoffset[s] + pb->NumberOfSat[s] && pb->Sat[pos].ID != id;
           ++pos)
@@ -635,8 +671,8 @@
         pb->Sat[pos].ID = id;
         D_NO_OF_BIASES(pb->Sat[pos].NumberOfPhaseBiases)
-          if (pb->SatelliteYawInformationIndicator) {
-            D_YAW_ANGLE(pb->Sat[pos].YawAngle)
-              D_YAW_RATE(pb->Sat[pos].YawRate)
-          }
+        if (pb->SatelliteYawInformationIndicator) {
+          D_YAW_ANGLE(pb->Sat[pos].YawAngle)
+          D_YAW_RATE(pb->Sat[pos].YawRate)
+        }
 #ifdef BNC_DEBUG_SSR
         fprintf(stderr, "id %2d #%d y %10.6f yr %10.6f ",
@@ -647,9 +683,9 @@
         for (j = 0; j < pb->Sat[pos].NumberOfPhaseBiases; ++j) {
           D_GNSS_SIGNAL_IDENTIFIER(pb->Sat[pos].Biases[j].Type)
-            D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator)
-            D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter)
-            D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)
-#ifdef BNC_DEBUG_SSR
-            fprintf(stderr, "t %02d int %02d disc %d b %8.4f ",
+          D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator)
+          D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter)
+          D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)
+#ifdef BNC_DEBUG_SSR
+          fprintf(stderr, "t %02d int %02d disc %d b %8.4f ",
             pb->Sat[pos].Biases[j].Type,
             pb->Sat[pos].Biases[j].IntegerIndicator,
@@ -669,21 +705,21 @@
       pb->messageExtType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME(EpochTime)
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME(EpochTime)
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME(EpochTime)
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME(EpochTime)
           break;
       }
       D_SSR_IOD(SSRIOD)
-        D_SSR_PROVIDER_ID(SSRProviderID)
-        D_SSR_SOLUTION_ID(SSRSolutionID)
-        D_EXTENDED_PHASE_BIAS_ID(ExtendedPhaseBiasPropertyID)
-#ifdef BNC_DEBUG_SSR
-        fprintf(stderr, "epochTime %d/%d ssrIod %d/%d  providerId %d/%d  solId %d/%d  extpbInd %d/%d \n",
+      D_SSR_PROVIDER_ID(SSRProviderID)
+      D_SSR_SOLUTION_ID(SSRSolutionID)
+      D_EXTENDED_PHASE_BIAS_ID(ExtendedPhaseBiasPropertyID)
+#ifdef BNC_DEBUG_SSR
+      fprintf(stderr, "epochTime %d/%d ssrIod %d/%d  providerId %d/%d  solId %d/%d  extpbInd %d/%d \n",
         EpochTime, pb->EpochTime[s],
         SSRIOD, pb->SSRIOD,
@@ -708,5 +744,5 @@
             D_WIDE_LANE_INDICATOR(pb->Sat[pos].Biases[j].WidelaneGroupIndicator)
 #ifdef BNC_DEBUG_SSR
-              fprintf(stderr, "t %02d wl %d ",
+          fprintf(stderr, "t %02d wl %d ",
               pb->Sat[pos].Biases[j].Type,
               pb->Sat[pos].Biases[j].WidelaneGroupIndicator);
@@ -724,23 +760,23 @@
       co->messageType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
           break;
       }
       D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
-        D_SSR_IOD(co->SSRIOD)
-        D_SSR_PROVIDER_ID(co->SSRProviderID)
-        D_SSR_SOLUTION_ID(co->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-        co->Supplied[COBOFS_ORBIT] |= 1;
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
+      D_SSR_IOD(co->SSRIOD)
+      D_SSR_PROVIDER_ID(co->SSRProviderID)
+      D_SSR_SOLUTION_ID(co->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+      co->Supplied[COBOFS_ORBIT] |= 1;
 #ifdef BNC_DEBUG_SSR
       fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n",
@@ -761,30 +797,30 @@
 
         switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATQZSS:
-          D_GPS_IODE(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATGLONASS:
-          D_GLONASS_IOD(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATGALILEO:
-          D_GALILEO_IOD(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATSBAS:
-          D_SBAS_T0MOD(co->Sat[pos].toe)
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATQZSS:
+            D_GPS_IODE(co->Sat[pos].IOD)
+          break;
+          case CLOCKORBIT_SATGLONASS:
+            D_GLONASS_IOD(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATGALILEO:
+            D_GALILEO_IOD(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATSBAS:
+            D_SBAS_T0MOD(co->Sat[pos].toe)
             D_SBAS_IODCRC(co->Sat[pos].IOD)
             break;
-        case CLOCKORBIT_SATBDS:
-          D_GPS_IODE(co->Sat[pos].IOD)
+          case CLOCKORBIT_SATBDS:
+            D_GPS_IODE(co->Sat[pos].IOD)
             break;
         }
         D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial)
-          D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack)
-          D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack)
-          D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial)
-          D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack)
-          D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack)
-#ifdef BNC_DEBUG_SSR
-          fprintf(stderr, "id %2d iod %3d dr %8.4f da %8.4f dc %8.4f dr %8.3f da %8.3f dc %8.3f\n",
+        D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack)
+        D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack)
+        D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial)
+        D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack)
+        D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack)
+#ifdef BNC_DEBUG_SSR
+        fprintf(stderr, "id %2d iod %3d dr %8.4f da %8.4f dc %8.4f dr %8.3f da %8.3f dc %8.3f\n",
           co->Sat[pos].ID, co->Sat[pos].IOD, co->Sat[pos].Orbit.DeltaRadial,
           co->Sat[pos].Orbit.DeltaAlongTrack, co->Sat[pos].Orbit.DeltaCrossTrack,
@@ -800,26 +836,78 @@
       co->messageType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
           break;
       }
       D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SSR_IOD(co->SSRIOD)
-        D_SSR_PROVIDER_ID(co->SSRProviderID)
-        D_SSR_SOLUTION_ID(co->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-        co->Supplied[COBOFS_CLOCK] |= 1;
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SSR_IOD(co->SSRIOD)
+      D_SSR_PROVIDER_ID(co->SSRProviderID)
+      D_SSR_SOLUTION_ID(co->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+      co->Supplied[COBOFS_CLOCK] |= 1;
 #ifdef BNC_DEBUG_SSR
       fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
         co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums,
         co->SSRIOD, co->SSRProviderID, co->SSRSolutionID);
+#endif
+      for (i = 0; i < nums; ++i) {
+        D_GPS_SATELLITE_ID(id)
+        for (pos = satoffset[s];
+          pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id;
+          ++pos)
+            ;
+        if (pos >= satoffset[s + 1])
+          return GCOBR_DATAMISMATCH;
+        else if (pos == co->NumberOfSat[s] + satoffset[s])
+          ++co->NumberOfSat[s];
+        co->Sat[pos].ID = id;
+
+        D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0)
+        D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1)
+        D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2)
+#ifdef BNC_DEBUG_SSR
+        fprintf(stderr, "id %2d c0 %8.3f c1 %8.3f c2 %8.3f\n",
+          co->Sat[pos].ID, co->Sat[pos].Clock.DeltaA0, co->Sat[pos].Clock.DeltaA1,
+          co->Sat[pos].Clock.DeltaA2);
+#endif
+      }
+    }
+    else if (kind == COBOFS_COMBINED) {
+      if (!co)
+        return GCOBR_NOCLOCKORBITPARAMETER;
+      co->messageType = type;
+      switch (s) {
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+      }
+      D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
+      D_SSR_IOD(co->SSRIOD)
+      D_SSR_PROVIDER_ID(co->SSRProviderID)
+      D_SSR_SOLUTION_ID(co->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+      co->Supplied[COBOFS_ORBIT] |= 1;
+      co->Supplied[COBOFS_CLOCK] |= 1;
+#ifdef BNC_DEBUG_SSR
+      fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n",
+        co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums,
+        co->SatRefDatum, co->SSRIOD, co->SSRProviderID, co->SSRSolutionID);
 #endif
       for (i = 0; i < nums; ++i) {
@@ -835,86 +923,34 @@
         co->Sat[pos].ID = id;
 
+        switch (s) {
+          case CLOCKORBIT_SATGPS:
+          case CLOCKORBIT_SATQZSS:
+            D_GPS_IODE(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATGLONASS:
+            D_GLONASS_IOD(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATGALILEO:
+            D_GALILEO_IOD(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATSBAS:
+            D_SBAS_T0MOD(co->Sat[pos].toe)
+            D_SBAS_IODCRC(co->Sat[pos].IOD)
+            break;
+          case CLOCKORBIT_SATBDS:
+            D_GPS_IODE(co->Sat[pos].IOD)
+            break;
+        }
+        D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial)
+        D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack)
+        D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack)
+        D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial)
+        D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack)
+        D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack)
         D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0)
-          D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1)
-          D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2)
-#ifdef BNC_DEBUG_SSR
-          fprintf(stderr, "id %2d c0 %8.3f c1 %8.3f c2 %8.3f\n",
-          co->Sat[pos].ID, co->Sat[pos].Clock.DeltaA0, co->Sat[pos].Clock.DeltaA1,
-          co->Sat[pos].Clock.DeltaA2);
-#endif
-      }
-    }
-    else if (kind == COBOFS_COMBINED) {
-      if (!co)
-        return GCOBR_NOCLOCKORBITPARAMETER;
-      co->messageType = type;
-      switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      }
-      D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)
-        D_SSR_IOD(co->SSRIOD)
-        D_SSR_PROVIDER_ID(co->SSRProviderID)
-        D_SSR_SOLUTION_ID(co->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-        co->Supplied[COBOFS_ORBIT] |= 1;
-      co->Supplied[COBOFS_CLOCK] |= 1;
-#ifdef BNC_DEBUG_SSR
-      fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n",
-        co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums,
-        co->SatRefDatum, co->SSRIOD, co->SSRProviderID, co->SSRSolutionID);
-#endif
-      for (i = 0; i < nums; ++i) {
-        D_GPS_SATELLITE_ID(id)
-          for (pos = satoffset[s];
-          pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id;
-          ++pos)
-            ;
-        if (pos >= satoffset[s + 1])
-          return GCOBR_DATAMISMATCH;
-        else if (pos == co->NumberOfSat[s] + satoffset[s])
-          ++co->NumberOfSat[s];
-        co->Sat[pos].ID = id;
-
-        switch (s) {
-        case CLOCKORBIT_SATGPS:
-        case CLOCKORBIT_SATQZSS:
-          D_GPS_IODE(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATGLONASS:
-          D_GLONASS_IOD(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATGALILEO:
-          D_GALILEO_IOD(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATSBAS:
-          D_SBAS_T0MOD(co->Sat[pos].toe)
-            D_SBAS_IODCRC(co->Sat[pos].IOD)
-            break;
-        case CLOCKORBIT_SATBDS:
-          D_GPS_IODE(co->Sat[pos].IOD)
-            break;
-        }
-        D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial)
-          D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack)
-          D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack)
-          D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial)
-          D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack)
-          D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack)
-          D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0)
-          D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1)
-          D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2)
-#ifdef BNC_DEBUG_SSR
-          fprintf(stderr, "id %2d iod %3d dr %10.6f da %10.6f dc %10.6f dr %10.6f da %10.6f dc %10.6f  c0 %10.6f c1 %10.6f c2 %10.6f\n",
+        D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1)
+        D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2)
+#ifdef BNC_DEBUG_SSR
+        fprintf(stderr, "id %2d iod %3d dr %10.6f da %10.6f dc %10.6f dr %10.6f da %10.6f dc %10.6f  c0 %10.6f c1 %10.6f c2 %10.6f\n",
           co->Sat[pos].ID, co->Sat[pos].IOD, co->Sat[pos].Orbit.DeltaRadial,
           co->Sat[pos].Orbit.DeltaAlongTrack, co->Sat[pos].Orbit.DeltaCrossTrack,
@@ -930,22 +966,22 @@
       co->messageType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
           break;
       }
       D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SSR_IOD(co->SSRIOD)
-        D_SSR_PROVIDER_ID(co->SSRProviderID)
-        D_SSR_SOLUTION_ID(co->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-        co->Supplied[COBOFS_URA] |= 1;
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SSR_IOD(co->SSRIOD)
+      D_SSR_PROVIDER_ID(co->SSRProviderID)
+      D_SSR_SOLUTION_ID(co->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+      co->Supplied[COBOFS_URA] |= 1;
 #ifdef BNC_DEBUG_SSR
       fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
@@ -955,5 +991,5 @@
       for (i = 0; i < nums; ++i) {
         D_GPS_SATELLITE_ID(id)
-          for (pos = satoffset[s];
+        for (pos = satoffset[s];
           pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id;
           ++pos)
@@ -966,5 +1002,5 @@
         D_SSR_URA(co->Sat[pos].UserRangeAccuracy)
 #ifdef BNC_DEBUG_SSR
-          fprintf(stderr, "id %2d ura %8.3f \n",
+        fprintf(stderr, "id %2d ura %8.3f \n",
           co->Sat[pos].ID, co->Sat[pos].UserRangeAccuracy);
 #endif
@@ -976,22 +1012,22 @@
       co->messageType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:/* Phase specific part of GNSS phase bias message */
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+        case CLOCKORBIT_SATGPS:/* Phase specific part of GNSS phase bias message */
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s])
           break;
       }
       D_SSR_UPDATE_INTERVAL(co->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SSR_IOD(co->SSRIOD)
-        D_SSR_PROVIDER_ID(co->SSRProviderID)
-        D_SSR_SOLUTION_ID(co->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-        co->Supplied[COBOFS_HR] |= 1;
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SSR_IOD(co->SSRIOD)
+      D_SSR_PROVIDER_ID(co->SSRProviderID)
+      D_SSR_SOLUTION_ID(co->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+      co->Supplied[COBOFS_HR] |= 1;
 #ifdef BNC_DEBUG_SSR
       fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
@@ -1001,5 +1037,5 @@
       for (i = 0; i < nums; ++i) {
         D_GPS_SATELLITE_ID(id)
-          for (pos = satoffset[s];
+        for (pos = satoffset[s];
           pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id;
           ++pos)
@@ -1012,5 +1048,5 @@
         D_HR_CLOCK_CORRECTION(co->Sat[pos].hrclock)
 #ifdef BNC_DEBUG_SSR
-          fprintf(stderr, "id %2d hrClock %8.3f \n",
+        fprintf(stderr, "id %2d hrClock %8.3f \n",
           co->Sat[pos].ID, co->Sat[pos].hrclock);
 #endif
@@ -1018,52 +1054,52 @@
     }
     else if (kind == COBOFS_CBIAS) {
-      if (!b)
+      if (!cb)
         return GCOBR_NOCODEBIASPARAMETER;
-      b->messageType = type;
+      cb->messageType = type;
       switch (s) {
-      case CLOCKORBIT_SATGPS:
-      case CLOCKORBIT_SATGALILEO:
-      case CLOCKORBIT_SATQZSS:
-      case CLOCKORBIT_SATSBAS:
-      case CLOCKORBIT_SATBDS:
-        D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s])
-          break;
-      case CLOCKORBIT_SATGLONASS:
-        D_GLONASS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s])
-          break;
-      }
-      D_SSR_UPDATE_INTERVAL(b->UpdateInterval)
-        D_MULTIPLE_MESSAGE_INDICATOR(mmi)
-        D_SSR_IOD(b->SSRIOD)
-        D_SSR_PROVIDER_ID(b->SSRProviderID)
-        D_SSR_SOLUTION_ID(b->SSRSolutionID)
-        D_NO_OF_SATELLITES(nums)
-#ifdef BNC_DEBUG_SSR
-        fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
-        b->EpochTime[s], b->UpdateInterval, mmi, b->NumberOfSat[s], nums,
-        b->SSRIOD, b->SSRProviderID, b->SSRSolutionID);
+        case CLOCKORBIT_SATGPS:
+        case CLOCKORBIT_SATGALILEO:
+        case CLOCKORBIT_SATQZSS:
+        case CLOCKORBIT_SATSBAS:
+        case CLOCKORBIT_SATBDS:
+          D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s])
+          break;
+        case CLOCKORBIT_SATGLONASS:
+          D_GLONASS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s])
+          break;
+      }
+      D_SSR_UPDATE_INTERVAL(cb->UpdateInterval)
+      D_MULTIPLE_MESSAGE_INDICATOR(mmi)
+      D_SSR_IOD(cb->SSRIOD)
+      D_SSR_PROVIDER_ID(cb->SSRProviderID)
+      D_SSR_SOLUTION_ID(cb->SSRSolutionID)
+      D_NO_OF_SATELLITES(nums)
+#ifdef BNC_DEBUG_SSR
+      fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",
+        cb->EpochTime[s], cb->UpdateInterval, mmi, cb->NumberOfSat[s], nums,
+        cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID);
 #endif
       for (i = 0; i < nums; ++i) {
         D_GPS_SATELLITE_ID(id)
-          for (pos = satoffset[s];
-          pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id;
+        for (pos = satoffset[s];
+          pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id;
           ++pos)
             ;
         if (pos >= satoffset[s + 1])
           return GCOBR_DATAMISMATCH;
-        else if (pos == b->NumberOfSat[s] + satoffset[s])
-          ++b->NumberOfSat[s];
-        b->Sat[pos].ID = id;
-        D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases)
+        else if (pos == cb->NumberOfSat[s] + satoffset[s])
+          ++cb->NumberOfSat[s];
+        cb->Sat[pos].ID = id;
+        D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases)
 #ifdef BNC_DEBUG_SSR
           fprintf(stderr, "id %2d #%d ",
-          b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases);
-#endif
-        for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) {
-          D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type)
-            D_CODE_BIAS(b->Sat[pos].Biases[j].Bias)
-#ifdef BNC_DEBUG_SSR
-            fprintf(stderr, "t %02d b %8.2f ",
-            b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias);
+          cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases);
+#endif
+        for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) {
+          D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type)
+          D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias)
+#ifdef BNC_DEBUG_SSR
+          fprintf(stderr, "t %02d b %8.2f ",
+            cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias);
 #endif
         }
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.h
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.h	(revision 11030)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.h	(revision 11031)
@@ -278,6 +278,7 @@
   size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size);
   size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size);
-  enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, struct VTEC *v, 
-                          struct PhaseBias *pb, struct MetaData *md, 
+  size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size);
+  enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 
+                          struct PhaseBias *pb, struct MetaData *md, struct Antenna* a,
                           const char *buffer, size_t size, int *bytesused);
  };
