Index: /branches/eam_branches/ohana.20170822/src/dvopsps/src/insert_objects_dvopsps_catalog.c
===================================================================
--- /branches/eam_branches/ohana.20170822/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 40266)
+++ /branches/eam_branches/ohana.20170822/src/dvopsps/src/insert_objects_dvopsps_catalog.c	(revision 40267)
@@ -1,4 +1,6 @@
 # include "dvopsps.h"
 # define DEBUG 0
+
+int Format_PSX_Name (char *buffer, int Nbuffer, double tmp_ra, double tmp_dec);
 
 int insert_objects_dvopsps_catalog (Catalog *catalog, char *basename, MYSQL *mysql) {
@@ -267,5 +269,7 @@
   double Tmean = average->Tmean == 0 ? NAN : ohana_sec_to_mjd (average->Tmean);
 
-// XXX this bit could/should be autocoded...
+  char coord_buffer[128];
+
+  // XXX this bit could/should be autocoded...
   PrintIOBuffer (ave_buffer, " (");
   PrintIOBuffer (ave_buffer, OFF_T_FMT", ", average->extID);          
@@ -288,70 +292,15 @@
   PRINT_FLOAT(ave_buffer, average->dD, 	     "%.5f, ");  // 0.010 mas precision
 
-  // Add names.
-  int ra_hr,ra_min,ra_sec,ra_fracsec;
-  int dec_deg,dec_min,dec_sec,dec_fracsec;
-  double tmp_ra,tmp_dec;
-
-  if ((secfilt->NstackDet != 0)&&(isfinite(average->Rstk))&&(isfinite(average->Dstk))) {
-    tmp_ra = average->Rstk;
-    tmp_dec = average->Dstk;
-  }
-  else {
-    tmp_ra = average->R;
-    tmp_dec = average->D;
-  }
-  
-  double dec_sign = (tmp_dec == 0.0) ? 0.0 : tmp_dec / fabs(tmp_dec);
-  tmp_dec = fabs(tmp_dec);
-
-
-  tmp_ra /= 15.0;
-  ra_hr   = (int) floor(tmp_ra);
-
-  tmp_ra -= ra_hr;
-  tmp_ra *= 60.0;
-  ra_min  = (int) floor(tmp_ra);
-  
-  tmp_ra -= ra_min;
-  tmp_ra *= 60.0;
-  ra_sec  = (int) floor(tmp_ra);
-
-  tmp_ra -= ra_sec;
-  tmp_ra *= 1000.0;
-  ra_fracsec = (int) floor(tmp_ra);
-
-  dec_deg = (int) floor(tmp_dec);
-
-  tmp_dec -= dec_deg;
-  tmp_dec *= 60.0;
-  dec_min = (int) floor(tmp_dec);
-
-  tmp_dec -= dec_min;
-  tmp_dec *= 60.0;
-  dec_sec = (int) floor(tmp_dec);
-
-  tmp_dec -= dec_sec;
-  tmp_dec *= 1000.0;
-  dec_fracsec = (int) floor(tmp_dec);
-
-  dec_deg *= (int) dec_sign;
-
-  // IAU NAME
-  PrintIOBuffer(ave_buffer, "'PSO J%02d%02d%02d.%03d%+03d%02d%02d.%03d',  ",
-		ra_hr,ra_min,ra_sec,ra_fracsec,
-		dec_deg,dec_min,dec_sec,dec_fracsec);
-
-  // PSO NAME
-  if ((secfilt->NstackDet != 0)&&(isfinite(average->Rstk))&&(isfinite(average->Dstk))) {
-    tmp_ra = average->Rstk;
-    tmp_dec = average->Dstk;
-  }
-  else {
-    tmp_ra = average->R;
-    tmp_dec = average->D;
-  }
-
-  PrintIOBuffer(ave_buffer, "'PSO J%09.5f%+09.5f',  ",
-		tmp_ra,tmp_dec);
+  int useStack = (secfilt->NstackDet != 0) && isfinite(average->Rstk) && isfinite(average->Dstk);
+
+  double tmp_ra  = useStack ? average->Rstk : average->R;
+  double tmp_dec = useStack ? average->Dstk : average->D;
+
+  // PSX NAME
+  Format_PSX_Name (coord_buffer, 128, tmp_ra, tmp_dec);
+  PrintIOBuffer(ave_buffer, "'%s',  ", coord_buffer);
+
+  // PSO NAME (IAU approved)
+  PrintIOBuffer(ave_buffer, "'PSO J%09.5f%+09.5f',  ", tmp_ra,tmp_dec);
 
   // End names
@@ -524,2 +473,43 @@
   return TRUE;
 }
+
+// XXX if the coords have NAN values (not sure why that would happen), return FALSE?
+int Format_PSX_Name (char *buffer, int Nbuffer, double tmp_ra, double tmp_dec) {
+
+  // Add names.
+  int ra_hr, ra_min, dec_deg, dec_min;
+  float ra_sec, dec_sec;
+
+  // convert to hours:
+  tmp_ra /= 15.0;
+  ra_hr   = (int) floor(tmp_ra);
+
+  tmp_ra -= ra_hr;
+  tmp_ra *= 60.0;
+  ra_min  = (int) floor(tmp_ra);
+  
+  tmp_ra -= ra_min;
+  tmp_ra *= 60.0;
+  ra_sec  = tmp_ra;
+
+  int dec_sign = (tmp_dec >= 0.0) ? +1 : -1;
+  tmp_dec = fabs(tmp_dec);
+
+  dec_deg = (int) floor(tmp_dec);
+
+  tmp_dec -= dec_deg;
+  tmp_dec *= 60.0;
+  dec_min = (int) floor(tmp_dec);
+
+  tmp_dec -= dec_min;
+  tmp_dec *= 60.0;
+  dec_sec = tmp_dec;
+
+  // IAU NAME
+  if (dec_sign == +1) {
+    snprintf (buffer, Nbuffer, "PSO J%02d %02d %06.3f + %03d %02d %06.3f", ra_hr, ra_min, ra_sec, dec_deg, dec_min, dec_sec);
+  } else {
+    snprintf (buffer, Nbuffer, "PSO J%02d %02d %06.3f - %03d %02d %06.3f", ra_hr, ra_min, ra_sec, dec_deg, dec_min, dec_sec);
+  }
+  return TRUE;
+}
