Index: trunk/BNC/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 879)
+++ trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 880)
@@ -44,4 +44,5 @@
 
 #include "RTCM3Decoder.h"
+#include "RTCM3coDecoder.h"
 #include "bncconst.h"
 #include "bncapp.h"
@@ -69,5 +70,5 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-RTCM3Decoder::RTCM3Decoder() : GPSDecoder() {
+RTCM3Decoder::RTCM3Decoder(const QString& fileName) : GPSDecoder() {
 
   const int LEAPSECONDS = 14; /* only needed for approx. time */
@@ -82,4 +83,8 @@
   _Parser.GPSWeek = tim/(7*24*60*60);
   _Parser.GPSTOW  = tim%(7*24*60*60);
+
+  // Sub-Decoder for Clock and Orbit Corrections
+  // -------------------------------------------
+  _coDecoder = new RTCM3coDecoder(fileName);
 }
 
@@ -87,4 +92,5 @@
 ////////////////////////////////////////////////////////////////////////////
 RTCM3Decoder::~RTCM3Decoder() {
+  delete _coDecoder;
 }
 
@@ -93,4 +99,10 @@
 t_irc RTCM3Decoder::Decode(char* buffer, int bufLen) {
 
+  // Try to decode Clock and Orbit Corrections
+  // -----------------------------------------
+  _coDecoder->Decode(buffer, bufLen);
+
+  // Remaining part decodes the Observations
+  // ---------------------------------------
   bool decoded = false;
 
Index: trunk/BNC/RTCM3/RTCM3Decoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 879)
+++ trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 880)
@@ -35,20 +35,23 @@
 class ephSender : public QObject {
 Q_OBJECT
-public:
+ public:
   ephSender();
   friend class RTCM3Decoder;
-signals:
+ signals:
   void newGPSEph(gpsephemeris* gpseph);
   void newGlonassEph(glonassephemeris* glonasseph);
 } ;
 
+class RTCM3coDecoder;
+
 class RTCM3Decoder : public GPSDecoder {
-public:
-  RTCM3Decoder();
+ public:
+  RTCM3Decoder(const QString& fileName);
   virtual ~RTCM3Decoder();
   virtual t_irc Decode(char* buffer = 0, int bufLen = 0);
-private:
+ private:
   struct RTCM3ParserData _Parser;
-  ephSender _ephSender;
+  ephSender              _ephSender;
+  RTCM3coDecoder*        _coDecoder; 
 } ;
 
Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 879)
+++ trunk/BNC/bncgetthread.cpp	(revision 880)
@@ -55,5 +55,4 @@
 #include "RTCM/RTCM2Decoder.h"
 #include "RTCM3/RTCM3Decoder.h"
-#include "RTCM3/RTCM3coDecoder.h"
 #include "RTIGS/RTIGSDecoder.h"
 
@@ -369,13 +368,9 @@
     else if (_format.indexOf("RTCM_3") != -1) {
       emit(newMessage("Get Data: " + _staID + " in RTCM 3.x format"));
-      _decoder = new RTCM3Decoder();
+      _decoder = new RTCM3Decoder(_staID);
     }
     else if (_format.indexOf("RTIGS") != -1) {
       emit(newMessage("Get Data: " + _staID + " in RTIGS format"));
       _decoder = new RTIGSDecoder();
-    }
-    else if (_format.indexOf("SP3") != -1) {
-      emit(newMessage("Get Corrections: " + _staID + " in RTCM 3.x format"));
-      _decoder = new RTCM3coDecoder(_staID);
     }
     else if (_format.indexOf("ZERO") != -1) {
