diff --git a/deps/RTKLIB b/deps/RTKLIB
index eac44a45c19ac56c0c031135e9818788b5993005..465a7650663d8ad3274a1565573013648822a4e9 160000
--- a/deps/RTKLIB
+++ b/deps/RTKLIB
@@ -1 +1 @@
-Subproject commit eac44a45c19ac56c0c031135e9818788b5993005
+Subproject commit 465a7650663d8ad3274a1565573013648822a4e9
diff --git a/include/gnss_utils/ublox_raw.h b/include/gnss_utils/ublox_raw.h
index 929ccd8767017382bd520780e62e4c32140be6fb..c3e4cc15180559331f3b0732f4243eb684076b63 100644
--- a/include/gnss_utils/ublox_raw.h
+++ b/include/gnss_utils/ublox_raw.h
@@ -26,9 +26,9 @@ public:
   ~UBloxRaw();
 
   RawDataType addDataStream(const std::vector<u_int8_t>& data_stream);
-
-  Observations& getObservations();
-  Navigation&   getNavigation();
+  
+  const Observations& getObservations();
+  const Navigation& getNavigation();
 
   RawDataType getRawDataType() const;
 
@@ -43,12 +43,12 @@ private:
   void updateObservations();
 };
 
-inline GNSSUtils::Observations& UBloxRaw::getObservations()
+inline const GNSSUtils::Observations& UBloxRaw::getObservations()
 {
   return obs_;
 }
 
-inline GNSSUtils::Navigation& UBloxRaw::getNavigation()
+inline const GNSSUtils::Navigation& UBloxRaw::getNavigation()
 {
   return nav_;
 }
diff --git a/src/gnss_utils.cpp b/src/gnss_utils.cpp
index 5e9ee98e3df54e50bd85120818f3bc87ef5776d2..70bad327efe878de41efd6fd2c21d5f7f4e51528 100644
--- a/src/gnss_utils.cpp
+++ b/src/gnss_utils.cpp
@@ -19,34 +19,38 @@ ComputePosOutput computePos(const GNSSUtils::Observations& _observations,
   sol_t                       sol;
   sol = { { 0 } };
 
-  output.pos_stat = pntpos(
-      _observations.data(), _observations.size(), &(_navigation.getNavigation()), &_prcopt, &sol, NULL, NULL, msg);
-
-  if (output.pos_stat == 0)
-  {
-    std::cout << "computePos: error in computing positioning, message: " << msg << "\n";
-  }
-
-  output.time = sol.time.time;
-  output.sec  = sol.time.sec;
-  output.pos  = Eigen::Vector3d(sol.rr);
-  std::cout << "Compute pos:  " << output.pos.transpose() << "\n";
-  output.vel = Eigen::Vector3d(&sol.rr[3]);
-  output.pos_covar << sol.qr[0], sol.qr[3], sol.qr[5], sol.qr[3], sol.qr[1], sol.qr[4], sol.qr[5], sol.qr[3], sol.qr[2];
-
-  // XXX: segmentation fault here.
-  // if (sol.dtr != NULL)
-  // {
-  //   output.rcv_bias << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5];
-  // }
-  output.type    = sol.type;
-  output.stat    = sol.stat;
-  output.ns      = sol.ns;
-  output.age     = sol.age;
-  output.ratio   = sol.ratio;
-  output.lat_lon = ecefToLatLonAlt(output.pos);
-
-  return output;
+    output.pos_stat = pntpos(_observations.data(), _observations.size(),
+                            &(_navigation.getNavigation()),
+                            &_prcopt, &sol, NULL, NULL, msg);
+    
+    if (output.pos_stat == 0)
+    {
+      std::cout << "computePos: error in computing positioning, message: "  << msg << "\n";
+    }
+
+    output.time = sol.time.time;
+    output.sec = sol.time.sec;
+    output.pos  = Eigen::Vector3d(sol.rr);
+    output.vel  = Eigen::Vector3d(&sol.rr[3]);
+    output.pos_covar << sol.qr[0], sol.qr[3], sol.qr[5],
+                        sol.qr[3], sol.qr[1], sol.qr[4],
+                        sol.qr[5], sol.qr[4], sol.qr[2];
+    //std::cout << "Compute pos:  " << output.pos.transpose() << "\n";
+    //std::cout << "Covariance:\n" << output.pos_covar << "\n";
+
+    // XXX: segmentation fault here.
+    // if (sol.dtr != NULL)
+    // {
+    //   output.rcv_bias << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5];
+    // }
+    output.type  = sol.type;
+    output.stat  = sol.stat;
+    output.ns    = sol.ns;
+    output.age   = sol.age;
+    output.ratio = sol.ratio;
+    output.lat_lon = ecefToLatLonAlt(output.pos);
+
+    return output;
 }
 
 // ComputePosOutput computePosOwn(const GNSSUtils::Observations & _observations,