Index: trunk/BNC/GPSS/hassDecoder.cpp
===================================================================
--- trunk/BNC/GPSS/hassDecoder.cpp	(revision 3507)
+++ trunk/BNC/GPSS/hassDecoder.cpp	(revision 3508)
@@ -71,6 +71,12 @@
     QString corrLine;
 
-    int messageType    = -1;
     int updateInterval =  0;
+    int messageType = 0;
+    if      (prn[0] == 'G') {
+      messageType = -COTYPE_GPSCOMBINED;
+    }
+    else if (prn[0] == 'R') {
+      messageType = -COTYPE_GLONASSCOMBINED;
+    }
 
     corrLine.sprintf("%d %d %d %.1f %s"
Index: trunk/BNC/bncephuser.cpp
===================================================================
--- trunk/BNC/bncephuser.cpp	(revision 3507)
+++ trunk/BNC/bncephuser.cpp	(revision 3508)
@@ -165,4 +165,8 @@
   if (!relevantMessageType(messageType)) {
     return failure;
+  }
+
+  if (messageType < 0) {
+    xyzCorr = true;  // correction in xyz instead of rao
   }
 
Index: trunk/BNC/bncephuser.h
===================================================================
--- trunk/BNC/bncephuser.h	(revision 3507)
+++ trunk/BNC/bncephuser.h	(revision 3508)
@@ -44,8 +44,12 @@
     eph     = 0;
     hrClk   = 0.0;
+    xyzCorr = false;
   }
   bool ready() {return raoSet && dClkSet;}
 
   static bool relevantMessageType(int msgType) {
+    if (msgType < 0) {
+      msgType = -msgType;
+    }
     return ( msgType == COTYPE_GPSCOMBINED     || 
              msgType == COTYPE_GLONASSCOMBINED ||
@@ -72,4 +76,5 @@
   bool         raoSet;
   bool         dClkSet;
+  bool         xyzCorr;
   const t_eph* eph;
 };
Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 3507)
+++ trunk/BNC/bncpppclient.cpp	(revision 3508)
@@ -409,5 +409,10 @@
   }
 
-  RSW_to_XYZ(xc.Rows(1,3), vv, raoHlp, dx);
+  if (cc->xyzCorr) {
+    dx = raoHlp;
+  }
+  else {
+    RSW_to_XYZ(xc.Rows(1,3), vv, raoHlp, dx);
+  }
 
   xc[0] -= dx[0];
