Index: /branches/eam_branches/ipp-20140904/Ohana/src/uniphot/src/update_catalog_setgalmodel.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/uniphot/src/update_catalog_setgalmodel.c	(revision 37451)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/uniphot/src/update_catalog_setgalmodel.c	(revision 37452)
@@ -18,4 +18,6 @@
   Average *average = catalog[0].average;
 
+  CoordTransform *tranform = InitTransform (COORD_CELESTIAL, COORD_GALACTIC);
+
   // first set the proper motion based on Galactic rotation and solar motion
   for (i = 0; i < catalog[0].Naverage; i++) {
@@ -25,5 +27,5 @@
     m = average[i].starparOffset;
     StarPar *starpar = &catalog[0].starpar[m];
-    double distance = NAN; // function of starpar->DM;
+    double distance = pow(10.0, 0.2*(starpar->DistMag + 5.0));
 
     double glon = starpar->galLon * RAD_DEG;
@@ -39,12 +41,24 @@
     double uB = uB_gal + uB_sol;
 
-    // c11, c22 are from http://arxiv.org/pdf/1306.2945v2.pdf
-    double c11 = NAN;
-    double c22 = NAN;
+    // C1, C2 are from http://arxiv.org/pdf/1306.2945v2.pdf
+    double Rrad = average[i].R*RAD_DEG;
+    double Drad = average[i].D*RAD_DEG;
 
-    double uR = c11 * uL + c22 * uB;
-    double uD = c11 * uB - c22 * uL;
+    double C1 = 
+      cos(Drad)*transform->cos_phi +
+      sin(Drad)*cos(Rrad)*transform->sin_phi_sin_Xo - 
+      sin(Drad)*sin(Rrad)*transform->sin_phi_cos_Xo;
 
-    starpar->uRA  = uR; // XXX units? (mas / year? arcsec / year?)
+    double C2 =
+      - cos(Rrad)*transform->sin_phi_cos_Xo
+      - sin(Rrad)*transform->sin_phi_sin_Xo;
+
+    double cosBinv = 1.0 / sqrt(C1*C1 + C2*C2);
+
+    // XXX add errors : I need to be able to choose the stars based on the error distribution
+    double uR = cosBinv * (C1 * uL - C2 * uB);
+    double uD = cosBinv * (C1 * uB + C2 * uL);
+
+    starpar->uRA  = uR;
     starpar->uDEC = uD;
 
