Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37420)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/include/libdvo_astro.h	(revision 37421)
@@ -5,6 +5,7 @@
   COORD_NONE, 
   COORD_CELESTIAL, 
-  COORD_GALACTIC, 
-  COORD_ECLIPTIC
+  COORD_GALACTIC, // based on Liu et al 2011
+  COORD_ECLIPTIC,
+  COORD_GALACTIC_REID_2004, // an older definition of the galactic plane
 } CoordTransformSystem;
 
Index: /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/coord_systems.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/coord_systems.c	(revision 37420)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/coord_systems.c	(revision 37421)
@@ -39,6 +39,6 @@
 	  // \delta^p_J = +27d 07' 41.7087"
 	  // \theta_J   = 122.93192526 deg
+
 	  // these differ from the above at the several milliarcsec level
-
 
 	  // These values were used in the past, but transform to/from B1950.0
@@ -46,4 +46,20 @@
 	  // transform->Xo  = 282.25*RAD_DEG;
 	  // transform->xo  =  33.00;
+
+	  break;
+	case COORD_GALACTIC_REID_2004:
+
+	  // J2000 FK5 transformation from Reid et al 2004, ApJ 616, 872
+	  transform->phi = (27.128336111 - 90.0)*RAD_DEG; // +27d 07' 42.01" (J2000) 
+	  transform->Xo  = (192.859508333 + 90.0)*RAD_DEG; // 12h 51m 26.282s (J2000)
+	  transform->xo  =  32.932;
+
+	  // comments from LSD code (lsd/builtins/misc.py, Mario Juric)
+	  // # Appendix of Reid et al. (http://adsabs.harvard.edu/cgi-bin/bib_query?2004ApJ...616..872R)
+	  // # This convention is also used by LAMBDA/WMAP (http://lambda.gsfc.nasa.gov/toolbox/tb_coordconv.cfm)
+
+	  // _angp = np.radians(192.859508333) #  12h 51m 26.282s (J2000)
+	  // _dngp = np.radians(27.128336111)  # +27d 07' 42.01" (J2000) 
+	  // _l0   = np.radians(32.932)
 
 	  break;
@@ -86,8 +102,33 @@
       switch (output) {
 	case COORD_CELESTIAL:
-	  // J2000 transformation from Liu et al 2011 ()
+	  // J2000 transformation from Liu et al 2011 (A&A 526, A16)
 	  transform->phi =  62.8717488056*RAD_DEG;
 	  transform->Xo  =  32.9319185700*RAD_DEG;
 	  transform->xo  = 282.8594812080;
+
+	  // These values were used in the past, but transform to/from B1950.0
+	  // transform->phi =  62.60*RAD_DEG;
+	  // transform->Xo  =  33.00*RAD_DEG;
+	  // transform->xo  = 282.25;
+	  break;
+	case COORD_GALACTIC:
+	  transform->phi = 0.0;
+	  transform->Xo  = 0.0;
+	  transform->xo  = 0.0;
+	  transform->isIdentity = TRUE;
+	  break;
+	case COORD_ECLIPTIC:
+	  return NULL;
+	default:
+	  abort();
+      }
+      break;
+    case COORD_GALACTIC_REID_2004:
+      switch (output) {
+	case COORD_CELESTIAL:
+	  // J2000 FK5 transformation from Reid et al 2004, ApJ 616, 872
+	  transform->phi = (90.0 - 27.128336111)*RAD_DEG; // +27d 07' 42.01" (J2000) 
+	  transform->Xo  =  32.932*RAD_DEG;
+	  transform->xo  = (192.859508333 + 90.0); // 12h 51m 26.282s (J2000)
 
 	  // These values were used in the past, but transform to/from B1950.0
@@ -143,10 +184,16 @@
   Y *= RAD_DEG;
 
+  double cosY = cos(Y);
+  double sinY = sin(Y);
+  
+  double cosX = cos(X);
+  double sinX = sin(X);
+
   // recast with constants extracted:
-  sin_y = cos(Y)*sin(X)*transform->sin_phi_cos_Xo - cos(Y)*cos(X)*transform->sin_phi_sin_Xo + sin(Y)*transform->cos_phi;
+  sin_y = cosY*sinX*transform->sin_phi_cos_Xo - cosY*cosX*transform->sin_phi_sin_Xo + sinY*transform->cos_phi;
   cos_y = sqrt (1 - sin_y*sin_y);
 
-  sin_x = cos(Y)*sin(X)*transform->cos_phi_cos_Xo - cos(Y)*cos(X)*transform->cos_phi_sin_Xo - sin(Y)*transform->sin_phi;
-  cos_x = cos(Y)*cos(X)*transform->cos_Xo + cos(Y)*sin(X)*transform->sin_Xo;
+  sin_x = cosY*sinX*transform->cos_phi_cos_Xo - cosY*cosX*transform->cos_phi_sin_Xo - sinY*transform->sin_phi;
+  cos_x = cosY*cosX*transform->cos_Xo + cosY*sinX*transform->sin_Xo;
       
   // atan2 returns -pi : +pi
Index: /branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.astro/csystem.c
===================================================================
--- /branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.astro/csystem.c	(revision 37420)
+++ /branches/eam_branches/ipp-20140904/Ohana/src/opihi/cmd.astro/csystem.c	(revision 37421)
@@ -13,16 +13,24 @@
   if (argc != 5) goto syntax;
 
-  switch (argv[1][0]) {
-    case 'C': input = COORD_CELESTIAL; break;
-    case 'G': input = COORD_GALACTIC; break;
-    case 'E': input = COORD_ECLIPTIC; break;
-    default: goto syntax;
+  if (!strcmp(argv[1], "G2004")) {
+    input = COORD_GALACTIC_REID_2004;
+  } else {
+    switch (argv[1][0]) {
+      case 'C': input = COORD_CELESTIAL; break;
+      case 'G': input = COORD_GALACTIC; break;
+      case 'E': input = COORD_ECLIPTIC; break;
+      default: goto syntax;
+    }
   }
 
-  switch (argv[2][0]) {
-    case 'C': output = COORD_CELESTIAL; break;
-    case 'G': output = COORD_GALACTIC; break;
-    case 'E': output = COORD_ECLIPTIC; break;
-    default: goto syntax;
+  if (!strcmp(argv[2], "G2004")) {
+    output = COORD_GALACTIC_REID_2004;
+  } else {
+    switch (argv[2][0]) {
+      case 'C': output = COORD_CELESTIAL; break;
+      case 'G': output = COORD_GALACTIC; break;
+      case 'E': output = COORD_ECLIPTIC; break;
+      default: goto syntax;
+    }
   }
 
