Index: /trunk/BNC/src/GPSDecoder.h
===================================================================
--- /trunk/BNC/src/GPSDecoder.h	(revision 10532)
+++ /trunk/BNC/src/GPSDecoder.h	(revision 10533)
@@ -27,4 +27,5 @@
 
 #include <iostream>
+#include <iomanip>
 #include <vector>
 #include <string>
@@ -35,6 +36,8 @@
 #include "bnctime.h"
 #include "satObs.h"
+#include "crs.h"
 
 class bncRinex;
+using namespace std;
 
 class GPSDecoder {
@@ -92,11 +95,14 @@
 
   /** List of observations */
-  QList<t_satObs>      _obsList;
-  QList<int>           _typeList;  // RTCM message types
-  QList<t_antInfo>     _antType;   // RTCM antenna descriptor
-  QList<t_recInfo>     _recType;   // RTCM receiver descriptor
-  QList<t_antRefPoint> _antList;   // RTCM antenna XYZ
-  QString              _gloFrq;    // GLONASS slot
-  bncRinex*            _rnx;       // RINEX writer
+  QList<t_satObs>         _obsList;
+  QList<int>              _typeList;           // RTCM message types
+  QList<t_antInfo>        _antType;            // RTCM antenna descriptor
+  QList<t_recInfo>        _recType;            // RTCM receiver descriptor
+  QList<t_antRefPoint>    _antList;            // RTCM antenna XYZ
+  QList<t_helmertPar>     _helmertPar;     // List of Helmert parameter sets
+  QList<t_serviceCrs>     _serviceCrs;         // Service CRS
+  QList<t_rtcmCrs>        _rtcmCrs;            // RTCM CRS
+  QString                 _gloFrq;             // GLONASS slot
+  bncRinex*               _rnx;                // RINEX writer
 };
 
Index: /trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h
===================================================================
--- /trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h	(revision 10532)
+++ /trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h	(revision 10533)
@@ -17,4 +17,5 @@
 #include "t_prn.h"
 #include "bncutils.h"
+#include "bits.h"
 
 enum IGS_NUMBERS {
@@ -406,5 +407,4 @@
   virtual CodeType    rnxTypeToCodeType(char system, std::string type) = 0;
 
-//#ifndef NOENCODE
 #define STOREBITS \
   while(numbits >= 8) { \
@@ -447,4 +447,5 @@
 
 #define SCALEADDBITS(a, b, c) ADDBITS(a, (int64_t)(c > 0 ? b*c+0.5 : b*c-0.5))
+
 #define MPI         3.141592653589793
 
@@ -665,6 +666,4 @@
 #define G_VTEC_QUALITY_INDICATOR(a)      GETSSRFLOAT     (a, 9, 1/20.0)          /* DF478, IDF041 */
 
-//#endif /* NODECODE */
-
 };
 
Index: /trunk/BNC/src/bncgetthread.cpp
===================================================================
--- /trunk/BNC/src/bncgetthread.cpp	(revision 10532)
+++ /trunk/BNC/src/bncgetthread.cpp	(revision 10533)
@@ -578,5 +578,5 @@
           } else if ((rtcmType >= 1057 && rtcmType <= 1068) ||
                      (rtcmType >= 1240 && rtcmType <= 1270) ||
-					 (rtcmType == 4076)) {
+					           (rtcmType == 4076)) {
             switch (rtcmType) {
               case 1057: case 1063: case 1240: case 1246: case 1252: case 1258:
@@ -941,10 +941,56 @@
         }
       }
-
-/*
-      for (int ii = 0; ii < decoder()->_helmertParList.size(); ii++) {
-        decoder()->_helmertParList[ii].print();
-      }
-*/
+      // Service CRS
+      // -----------
+      for (int ii = 0; ii < decoder()->_serviceCrs.size(); ii++) {
+        QString servicecrsname = QString(": Servive CRS Name: %1 ").arg(decoder()->_serviceCrs[ii]._name);
+        QString coordinateEpoch = QString(": Coordinate Epoch: %1 ").arg(decoder()->_serviceCrs[ii]._coordinateEpoch);
+        QString ce = QString(": CE: %1 ").arg(decoder()->_serviceCrs[ii]._CE);
+        emit(newMessage(_staID + servicecrsname.toLatin1(), true));
+        emit(newMessage(_staID + coordinateEpoch.toLatin1(), true));
+        emit(newMessage(_staID + ce.toLatin1(), true));
+      }
+
+      // RTCM CRS
+      // -----------
+      for (int ii = 0; ii < decoder()->_rtcmCrs.size(); ii++) {
+        QString rtcmcrsname = QString(": RTCM CRS Name: %1 ").arg(decoder()->_rtcmCrs[ii]._name);
+        QString anchor = QString(": Anchor: %1 ").arg(decoder()->_rtcmCrs[ii]._anchor);
+        QString platenumber = QString(": Plate Number: %1 ").arg(decoder()->_rtcmCrs[ii]._plateNumber);
+        emit(newMessage(_staID + rtcmcrsname.toLatin1(), true));
+        emit(newMessage(_staID + anchor.toLatin1(), true));
+        emit(newMessage(_staID + platenumber.toLatin1(), true));
+        for (int i = 0; i<decoder()->_rtcmCrs[ii]._databaseLinks.size(); i++) {
+          QString dblink = QString(": Database Link: %1 ").arg(decoder()->_rtcmCrs[ii]._databaseLinks[i]);
+          emit(newMessage(_staID + dblink.toLatin1(), true));
+        }
+      }
+
+      // Helmert Parameters
+      //-------------------
+      for (int ii = 0; ii < decoder()->_helmertPar.size(); ii++) {
+        t_helmertPar& helmertPar = decoder()->_helmertPar[ii];
+        bncTime t; t.setmjd(0, helmertPar._t0); QString dateStr = QString::fromStdString(t.datestr());
+        QString sourcename = QString(": MT1301 Source Name: %1 ").arg(helmertPar._sourceName);
+        QString targetname = QString(": MT1301 Target Name: %1 ").arg(helmertPar._targetName);
+        QString sysidentnum = QString(": MT1301 Sys Ident Num: %1 ").arg(helmertPar._sysIdentNum);
+        QString trafomessageind = QString(": MT1301 Trafo Ident Num: %1 ").arg(helmertPar.IndtoString());
+        QString epoch = QString(": MT1301 t0: MJD %1 (%2) ").arg(helmertPar._t0).arg(dateStr);
+        QString partrans = QString(": MT1301 Helmert Par Trans: dx = %1, dy = %2, dz = %3, dxr = %4, dyr = %5, dzr = %6")
+            .arg(helmertPar._dx).arg(helmertPar._dy).arg(helmertPar._dz)
+            .arg(helmertPar._dxr).arg(helmertPar._dyr).arg(helmertPar._dzr);
+        QString parrot = QString(": MT1301 Helmert Par Rot: ox = %1, oy = %2, oz = %3, oxr = %4, oyr = %5, ozr = %6")
+            .arg(helmertPar._ox).arg(helmertPar._oy).arg(helmertPar._oz)
+            .arg(helmertPar._oxr).arg(helmertPar._oyr).arg(helmertPar._ozr);
+        QString parscale = QString(": MT1301 Helmert Par Scale: sc = %1, scr = %2").arg(helmertPar._sc).arg(helmertPar._scr);
+        emit(newMessage(_staID + sourcename.toLatin1(), true));
+        emit(newMessage(_staID + targetname.toLatin1(), true));
+        emit(newMessage(_staID + sysidentnum.toLatin1(), true));
+        emit(newMessage(_staID + trafomessageind.toLatin1(), true));
+        emit(newMessage(_staID + epoch.toLatin1(), true));
+        emit(newMessage(_staID + partrans.toLatin1(), true));
+        emit(newMessage(_staID + parrot.toLatin1(), true));
+        emit(newMessage(_staID + parscale.toLatin1(), true));
+      }
     }
   }
Index: /trunk/BNC/src/bncutils.cpp
===================================================================
--- /trunk/BNC/src/bncutils.cpp	(revision 10532)
+++ /trunk/BNC/src/bncutils.cpp	(revision 10533)
@@ -95,6 +95,5 @@
 #define GPSLEAPSTART    19 /* 19 leap seconds existed at 6.1.1980 */
 
-static int longyear(int year, int month)
-{
+static int longyear(int year, int month) {
   if(!(year % 4) && (!(year % 400) || (year % 100)))
   {
@@ -105,6 +104,5 @@
 }
 
-int gnumleap(int year, int month, int day)
-{
+int gnumleap(int year, int month, int day) {
   int ls = 0;
   const struct leapseconds *l;
@@ -119,6 +117,5 @@
 
 /* Convert Moscow time into UTC (fixnumleap == 1) or GPS (fixnumleap == 0) */
-void updatetime(int *week, int *secOfWeek, int mSecOfWeek, bool fixnumleap)
-{
+void updatetime(int *week, int *secOfWeek, int mSecOfWeek, bool fixnumleap) {
   int y,m,d,k,l, nul;
   unsigned int j = *week*(7*24*60*60) + *secOfWeek + 5*24*60*60+3*60*60;
Index: /trunk/BNC/src/bncutils.h
===================================================================
--- /trunk/BNC/src/bncutils.h	(revision 10532)
+++ /trunk/BNC/src/bncutils.h	(revision 10533)
@@ -171,72 +171,4 @@
 int bitExtracted(int number, int k, int p);
 
-// RTCM3 GPS EPH encoding
-//////////////////////////////////////////////////////////
-#define GPSTOINT(type, value) static_cast<type>(round(value))
-
-#define GPSADDBITS(a, b) {bitbuffer = (bitbuffer<<(a)) \
-                       |(GPSTOINT(long long,b)&((1ULL<<a)-1)); \
-                       numbits += (a); \
-                       while(numbits >= 8) { \
-                       buffer[size++] = bitbuffer>>(numbits-8);numbits -= 8;}}
-
-#define GPSADDBITSFLOAT(a,b,c) {long long i = GPSTOINT(long long,(b)/(c)); \
-                             GPSADDBITS(a,i)};
-
-// RTCM3 GLONASS EPH encoding
-//////////////////////////////////////////////////////////
-#define GLONASSTOINT(type, value) static_cast<type>(round(value))
-#define GLONASSADDBITS(a, b) {bitbuffer = (bitbuffer<<(a)) \
-                       |(GLONASSTOINT(long long,b)&((1ULL<<(a))-1)); \
-                       numbits += (a); \
-                       while(numbits >= 8) { \
-                       buffer[size++] = bitbuffer>>(numbits-8);numbits -= 8;}}
-#define GLONASSADDBITSFLOATM(a,b,c) {int s; long long i; \
-                       if(b < 0.0) \
-                       { \
-                         s = 1; \
-                         i = GLONASSTOINT(long long,(-b)/(c)); \
-                         if(!i) s = 0; \
-                       } \
-                       else \
-                       { \
-                         s = 0; \
-                         i = GLONASSTOINT(long long,(b)/(c)); \
-                       } \
-                       GLONASSADDBITS(1,s) \
-                       GLONASSADDBITS(a-1,i)}
-
-// RTCM3 Galileo EPH encoding
-//////////////////////////////////////////////////////////
-#define GALILEOTOINT(type, value) static_cast<type>(round(value))
-#define GALILEOADDBITS(a, b) {bitbuffer = (bitbuffer<<(a)) \
-                       |(GALILEOTOINT(long long,b)&((1LL<<a)-1)); \
-                       numbits += (a); \
-                       while(numbits >= 8) { \
-                       buffer[size++] = bitbuffer>>(numbits-8);numbits -= 8;}}
-#define GALILEOADDBITSFLOAT(a,b,c) {long long i = GALILEOTOINT(long long,(b)/(c)); \
-                             GALILEOADDBITS(a,i)};
-
-// RTCM3 SBAS EPH encoding
-//////////////////////////////////////////////////////////
-#define SBASTOINT(type, value) static_cast<type>(round(value))
-#define SBASADDBITS(a, b) {bitbuffer = (bitbuffer<<(a)) \
-                       |(SBASTOINT(long long,b)&((1ULL<<a)-1)); \
-                       numbits += (a); \
-                       while(numbits >= 8) { \
-                       buffer[size++] = bitbuffer>>(numbits-8);numbits -= 8;}}
-#define SBASADDBITSFLOAT(a,b,c) {long long i = SBASTOINT(long long,(b)/(c)); \
-                             SBASADDBITS(a,i)};
-
-// RTCM3 BDS EPH encoding
-//////////////////////////////////////////////////////////
-#define BDSTOINT(type, value) static_cast<type>(round(value))
-#define BDSADDBITS(a, b) {bitbuffer = (bitbuffer<<(a)) \
-                       |(BDSTOINT(long long,b)&((1ULL<<a)-1)); \
-                       numbits += (a); \
-                       while(numbits >= 8) { \
-                       buffer[size++] = bitbuffer>>(numbits-8);numbits -= 8;}}
-#define BDSADDBITSFLOAT(a,b,c) {long long i = BDSTOINT(long long,(b)/(c)); \
-                             BDSADDBITS(a,i)};
 
 #endif
Index: /trunk/BNC/src/ephemeris.cpp
===================================================================
--- /trunk/BNC/src/ephemeris.cpp	(revision 10532)
+++ /trunk/BNC/src/ephemeris.cpp	(revision 10533)
@@ -14,4 +14,5 @@
 #include "pppInclude.h"
 #include "pppModel.h"
+#include "RTCM3/bits.h"
 
 using namespace std;
Index: /trunk/BNC/src/ephemeris.h
===================================================================
--- /trunk/BNC/src/ephemeris.h	(revision 10532)
+++ /trunk/BNC/src/ephemeris.h	(revision 10533)
@@ -10,5 +10,4 @@
 #include "t_prn.h"
 #include "gnss.h"
-
 
 class t_orbCorr;
@@ -569,3 +568,4 @@
 
 };
+
 #endif
Index: /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 10532)
+++ /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 10533)
@@ -60,5 +60,5 @@
   }
 
-  _crdTrafo = crdTrafo;
+  _crdTrafoStr = crdTrafo;
 
   _ssrFormat = ssrFormat;
@@ -135,5 +135,5 @@
   // Transformation Parameters from ITRF2014 to ETRF2000
   // http://etrs89.ign.fr/pub/EUREF-TN-1-Mar-04-2024.pdf
-  if (_crdTrafo == "ETRF2000") {
+  if (_crdTrafoStr == "ETRF2000") {
     _dx  =  0.0552;
     _dy  =  0.0527;
@@ -158,5 +158,5 @@
   }
   // Transformation Parameters from ITRF2014 to GDA2020 (Ryan Ruddick, GA)
-  else if (_crdTrafo == "GDA2020") {
+  else if (_crdTrafoStr == "GDA2020") {
     _dx  = 0.0;
     _dy  = 0.0;
@@ -182,5 +182,5 @@
   // Transformation Parameters from IGb14 to SIRGAS2000 (Thanks to Sonia Costa, BRA)
   // June 29 2020: TX:-0.0027 m  TY:-0.0025 m  TZ:-0.0042 m  SCL:1.20 (ppb) no rotations and no rates.*/
-  else if (_crdTrafo == "SIRGAS2000") {
+  else if (_crdTrafoStr == "SIRGAS2000") {
     _dx  = -0.0027;
     _dy  = -0.0025;
@@ -204,5 +204,5 @@
   }
   // Transformation Parameters from ITRF2014 to DREF91
-  else if (_crdTrafo == "DREF91") {
+  else if (_crdTrafoStr == "DREF91") {
     _dx  =  0.0547;
     _dy  =  0.0522;
@@ -226,5 +226,5 @@
     _t0  =  2010.0;
   }
-  else if (_crdTrafo == "Custom") {
+  else if (_crdTrafoStr == "Custom") {
     _dx = settings.value("trafo_dx").toDouble();
     _dy = settings.value("trafo_dy").toDouble();
@@ -244,8 +244,8 @@
   }
     // TODO: the following lines can be deleted if all parameters are updated regarding ITRF2020
-  if (_crdTrafo == "ETRF2000" ||
-      _crdTrafo == "GDA2020"  ||
-      _crdTrafo == "DREF91"   ||
-      _crdTrafo == "SIRGAS2000") {
+  if (_crdTrafoStr == "ETRF2000" ||
+      _crdTrafoStr == "GDA2020"  ||
+      _crdTrafoStr == "DREF91"   ||
+      _crdTrafoStr == "SIRGAS2000") {
        // Transformation Parameters from ITRF2020 to ITRF2014
        // from ITRF web site: https://itrf.ign.fr/en/solutions/transformations
@@ -329,5 +329,5 @@
     if      (nextEpoch != -1 && nextEpoch < iEpoEnd) {
       rtnetStreamBuffer = rtnetStreamBuffer.mid(nextEpoch, nextEpochEnd);
-      lines = rtnetStreamBuffer.split('\n', QString::SkipEmptyParts);
+      lines = rtnetStreamBuffer.split('\n', Qt::SkipEmptyParts);
       if (lines.size() > 2) {
         decodeRtnetEpoch(lines);
@@ -341,5 +341,5 @@
   }
 
-  lines = _rtnetStreamBuffer.left(iEpoEnd).split('\n', QString::SkipEmptyParts);
+  lines = _rtnetStreamBuffer.left(iEpoEnd).split('\n', Qt::SkipEmptyParts);
 
   _rtnetStreamBuffer = _rtnetStreamBuffer.mid(iEpoEnd + 3);
@@ -374,26 +374,89 @@
   memset(&co, 0, sizeof(co));
   co.EpochTime[CLOCKORBIT_SATGPS] = static_cast<int>(epoTime.gpssec());
+  double gt = epoTime.gpssec() - gnumleap(year, month, day);
   if      (_ssrFormat == "RTCM-SSR") {
-    double gt = epoTime.gpssec() + 3 * 3600 - gnumleap(year, month, day);
-    co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(fmod(gt, 86400.0));
-  }
-  else if (_ssrFormat == "IGS-SSR") {
-    co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(epoTime.gpssec());
-  }
+    gt += 3 * 3600;
+  }
+  co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(fmod(gt, 86400.0));
   co.EpochTime[CLOCKORBIT_SATGALILEO] = static_cast<int>(epoTime.gpssec());
   co.EpochTime[CLOCKORBIT_SATQZSS]    = static_cast<int>(epoTime.gpssec());
   co.EpochTime[CLOCKORBIT_SATSBAS]    = static_cast<int>(epoTime.gpssec());
-  if      (_ssrFormat == "RTCM-SSR") {
-    co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.bdssec());
-  }
-  else if (_ssrFormat == "IGS-SSR") {
-    co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.gpssec());
-  }
+  co.EpochTime[CLOCKORBIT_SATBDS]     = static_cast<int>(epoTime.bdssec());
   co.Supplied[_ssrCorr->COBOFS_CLOCK] = 1;
   co.Supplied[_ssrCorr->COBOFS_ORBIT] = 1;
-  co.SatRefDatum = _ssrCorr->DATUM_ITRF; // ToDo: to decode from RTNET format
+  (_crdTrafoStr == "IGS20") ?
+      co.SatRefDatum = _ssrCorr->DATUM_ITRF :
+      co.SatRefDatum = _ssrCorr->DATUM_LOCAL;
   co.SSRIOD        = _IOD;
   co.SSRProviderID = _PID; // 256 .. BKG,  257 ... EUREF
   co.SSRSolutionID = _SID;
+  if      (_ssrFormat == "RTCM-SSR") {
+    co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.bdssec());
+  }
+  else if (_ssrFormat == "IGS-SSR") {
+    co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.gpssec());
+  }
+  co.Supplied[_ssrCorr->COBOFS_CLOCK] = 1;
+  co.Supplied[_ssrCorr->COBOFS_ORBIT] = 1;
+
+
+  t_serviceCrs serviceCrs;
+  t_rtcmCrs    rtcmCrs;
+  if (_crdTrafoStr == "IGS20") {
+    serviceCrs._CE = serviceCrs._coordinateEpoch  = 0;
+    int nc = _crdTrafoStr.length();
+    if (nc > 31) {nc = 31;}
+    for (int i = 0; i < nc; i++) {
+      serviceCrs._name[i] =
+         rtcmCrs._name[i] = _crdTrafoStr.toStdString()[i];
+    }
+    serviceCrs._name[nc] = 0;
+    rtcmCrs._name[nc] = 0;
+    rtcmCrs._anchor      = 0; // global CRS
+    rtcmCrs._plateNumber = 0; // unknown
+    rtcmCrs._databaseLinks << "ISO.DATUM.979" << "ISO.CRS:980";
+  }
+  else {
+    if (_crdTrafoStr != "Custom") {
+      serviceCrs._coordinateEpoch = _t0;
+      serviceCrs.setCEFromCoordinateEpoch();
+      int nc = _crdTrafoStr.length();
+      if (nc > 31) {nc = 31;}
+      for (int i = 0; i < nc; i++) {
+        serviceCrs._name[i] = _crdTrafoStr.toStdString()[i];
+      }
+      serviceCrs._name[nc] = 0;
+      QString rtcmcrsname = _crdTrafoStr + QString("(%1)").arg(_t0,4,'d',0);
+      nc = rtcmcrsname.length();
+      if (nc > 31) {nc = 31;}
+      for (int i = 0; i < nc; i++) {
+        rtcmCrs._name[i] = rtcmcrsname.toStdString()[i];
+      }
+      rtcmCrs._name[nc] = 0;
+      if (_crdTrafoStr == "ETRF2000") {
+        rtcmCrs._anchor      = 1; // plate-fixed CRS
+        rtcmCrs._plateNumber = 7; // Eurasia
+        rtcmCrs._databaseLinks << "ISO.DATUM.187"    << "ISO.CRS:260"   << "ISO.CRS:457"
+                               << "EPSG.DATUM:1186"  << "EPSG.CRS:7930" << "EPSG.CRS:7931";
+      }
+      else if (_crdTrafoStr == "DREF91") {
+        rtcmCrs._anchor      = 1; // plate-fixed CRS
+        rtcmCrs._plateNumber = 7; // Eurasia
+      }
+      else if (_crdTrafoStr == "GDA2020") {
+        rtcmCrs._anchor      = 1; // plate-fixed CRS
+        rtcmCrs._plateNumber = 4; // Australia
+        rtcmCrs._databaseLinks << "ISO.DATUM.186"   << "ISO.CRS:404"   << "ISO.CRS:329"
+                               << "EPSG.DATUM:1168" << "EPSG.CRS:7842" << "EPSG.CRS:7843";
+      }
+      else if (_crdTrafoStr == "SIRGAS2000") {
+        rtcmCrs._anchor      =  1; // plate-fixed CRS
+        rtcmCrs._plateNumber = 12; // S.America
+        rtcmCrs._databaseLinks << "ISO.DATUM:169"   << "ISO.CRS:384"   << "ISO.CRS:313"
+                               << "EPSG.DATUM:6674" << "EPSG.CRS:4988" << "EPSG.CRS:4989";
+      }
+    }
+  }
+
 
   struct SsrCorr::CodeBias bias;
@@ -1026,5 +1089,5 @@
 
   double dc = 0.0;
-  if (_crdTrafo != "IGS20") {
+  if (_crdTrafoStr != "IGS20") {
     crdTrafo14(GPSweek, xP, dc); // ITRF2020 => ITRF2014
     crdTrafo(GPSweek, xP, dc);   // ITRF2014 to other reference frames
@@ -1142,25 +1205,25 @@
   ColumnVector meanSta(3);
 
-  if (_crdTrafo == "ETRF2000") {
+  if (_crdTrafoStr == "ETRF2000") {
     meanSta(1) = 3661090.0;
     meanSta(2) = 845230.0;
     meanSta(3) = 5136850.0;
   }
-  else if (_crdTrafo == "GDA2020") {
+  else if (_crdTrafoStr == "GDA2020") {
     meanSta(1) = -4052050.0;
     meanSta(2) = 4212840.0;
     meanSta(3) = -2545110.0;
   }
-  else if (_crdTrafo == "SIRGAS2000") {
+  else if (_crdTrafoStr == "SIRGAS2000") {
     meanSta(1) = 3740860.0;
     meanSta(2) = -4964290.0;
     meanSta(3) = -1425420.0;
   }
-  else if (_crdTrafo == "DREF91") {
+  else if (_crdTrafoStr == "DREF91") {
     meanSta(1) = 3959579.0;
     meanSta(2) = 721719.0;
     meanSta(3) = 4931539.0;
   }
-  else if (_crdTrafo == "Custom") {
+  else if (_crdTrafoStr == "Custom") {
     meanSta(1) = 0.0;
     meanSta(2) = 0.0;
Index: /trunk/BNC/src/upload/bncrtnetuploadcaster.h
===================================================================
--- /trunk/BNC/src/upload/bncrtnetuploadcaster.h	(revision 10532)
+++ /trunk/BNC/src/upload/bncrtnetuploadcaster.h	(revision 10533)
@@ -9,4 +9,5 @@
 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h"
 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h"
+#include "../RTCM3/crs.h"
 
 class bncEphUser;
@@ -55,5 +56,5 @@
   bncEphUser*    _ephUser;
   QString        _rtnetStreamBuffer;
-  QString        _crdTrafo;
+  QString        _crdTrafoStr;
   SsrCorr*       _ssrCorr;
   QString        _ssrFormat;
@@ -65,4 +66,5 @@
   int            _samplRtcmClkCorr;
   double         _samplRtcmEphCorr;
+
   double         _dx;
   double         _dy;
@@ -80,5 +82,5 @@
   double         _scr;
   double         _t0;
-  // TODO: the following lines can be deleted if all parameters are updated regarding ITRF2020
+  /* TODO: the following lines can be deleted if all parameters are updated regarding ITRF2020*/
   double         _dx14;
   double         _dy14;
