Index: trunk/BNC/bncutils.cpp
===================================================================
--- trunk/BNC/bncutils.cpp	(revision 2987)
+++ trunk/BNC/bncutils.cpp	(revision 2988)
@@ -191,4 +191,19 @@
 }
 
+// Transformation xyz --> radial, along track, out-of-plane
+////////////////////////////////////////////////////////////////////////////
+void XYZ_to_RSW(const ColumnVector& rr, const ColumnVector& vv,
+                const ColumnVector& xyz, ColumnVector& rsw) {
+
+  ColumnVector along  = vv / vv.norm_Frobenius();
+  ColumnVector cross  = crossproduct(rr, vv); cross /= cross.norm_Frobenius();
+  ColumnVector radial = crossproduct(along, cross);
+
+  rsw.ReSize(3);
+  rsw(1) = DotProduct(xyz, radial);
+  rsw(2) = DotProduct(xyz, along);
+  rsw(3) = DotProduct(xyz, cross);
+}
+
 // Rectangular Coordinates -> Ellipsoidal Coordinates
 ////////////////////////////////////////////////////////////////////////////
Index: trunk/BNC/bncutils.h
===================================================================
--- trunk/BNC/bncutils.h	(revision 2987)
+++ trunk/BNC/bncutils.h	(revision 2988)
@@ -47,4 +47,7 @@
                 const ColumnVector& rsw, ColumnVector& xyz);
 
+void XYZ_to_RSW(const ColumnVector& rr, const ColumnVector& vv,
+                const ColumnVector& xyz, ColumnVector& rsw);
+
 t_irc xyz2ell(const double* XYZ, double* Ell);
 
Index: trunk/BNC/combination/bnccomb.cpp
===================================================================
--- trunk/BNC/combination/bnccomb.cpp	(revision 2987)
+++ trunk/BNC/combination/bnccomb.cpp	(revision 2988)
@@ -23,4 +23,5 @@
 #include "bncsettings.h"
 #include "bncmodel.h"
+#include "bncutils.h"
 
 using namespace std;
@@ -344,8 +345,13 @@
   prevEph->position(newCorr->tt.gpsw(), newCorr->tt.gpssec(), 
                     oldXC.data(), oldVV.data());
+
   ColumnVector newXC(4);
   ColumnVector newVV(3);
   lastEph->position(newCorr->tt.gpsw(), newCorr->tt.gpssec(), 
                     newXC.data(), newVV.data());
+
+  ColumnVector dX = newXC.Rows(1,3) - oldXC.Rows(1,3);
+  ColumnVector dRAO(3);
+  XYZ_to_RSW(newXC.Rows(1,3), newVV, dX, dRAO);
 }
 
