Index: trunk/BNC/src/RTRover/bncrtrover.cpp
===================================================================
--- trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 4787)
+++ trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 4788)
@@ -173,7 +173,9 @@
   int numOrbCorr = 0;
   int numClkCorr = 0;
-
-  rtrover_orbCorr orbCorr[corrList.size()];
-  rtrover_clkCorr clkCorr[corrList.size()];
+  int numBiases  = 0;
+
+  rtrover_orbCorr    orbCorr[corrList.size()];
+  rtrover_clkCorr    clkCorr[corrList.size()];
+  rtrover_codeBiases biases[corrList.size()];
 
   QListIterator<QString> it(corrList);
@@ -191,4 +193,6 @@
     }
 
+    // Orbit and clock corrections
+    // ---------------------------
     t_corr corr;
     if (corr.readLine(line) == success) {
@@ -228,6 +232,27 @@
       }
     }
-  }
-  
+
+    // Code Biases
+    // -----------
+    t_bias bias;
+    if (bias.readLine(line) == success) {
+      ++numBiases;
+      rtrover_codeBiases& codeBiases = biases[numBiases-1];
+      codeBiases._biases = new rtrover_bias[bias._value.size()];
+      int iBias = -1;
+      QMapIterator<QByteArray, double> it(bias._value);
+      while (it.hasNext()) {
+        it.next();
+        ++iBias;
+        rtrover_bias& singleBias = codeBiases._biases[iBias];
+        singleBias._rnxType[0] = it.key()[0];
+        singleBias._rnxType[1] = it.key()[1];
+        singleBias._value      = it.value();
+      }
+    }
+  }
+
+  // Pass Corrections and Biases to client library
+  // ---------------------------------------------
   if (numOrbCorr > 0) {
     rtrover_putOrbCorrections(numOrbCorr, orbCorr);
@@ -235,4 +260,13 @@
   if (numClkCorr > 0) {
     rtrover_putClkCorrections(numClkCorr, clkCorr);
+  }
+  if (numBiases > 0) {
+    rtrover_putBiases(numBiases, biases);
+  }
+
+  // Clean the memory
+  // ----------------
+  for (int ii = 0; ii < numBiases; ii++) {
+    delete [] biases[ii]._biases;
   }
 }
