Index: /trunk/Ohana/src/addstar/include/addstar.h
===================================================================
--- /trunk/Ohana/src/addstar/include/addstar.h	(revision 6682)
+++ /trunk/Ohana/src/addstar/include/addstar.h	(revision 6683)
@@ -69,4 +69,5 @@
 double 	SNLIMIT;
 int    	ACCEPT_ASTROM;  // accept even bad astrometry solutions (NASTRO == 0)
+int    	ACCEPT_MOTION;  // accept reference proper motion measurements
 int    	TEXTMODE;       // force input file to be loaded as RAW
 int     SUBPIX;         // apply a subpix correction
@@ -125,7 +126,7 @@
 double     get_subpix             PROTO((double x, double y));
 Stars     *getgsc                 PROTO((SkyRegion *patch, int *NSTARS));
-Stars     *gettycho               PROTO((SkyRegion *catstats, int photcode, double epoch, int *Nstars));
+Stars     *gettycho               PROTO((SkyRegion *catstats, int photcode, int *Nstars));
 Stars     *getusno                PROTO((SkyRegion *catstats, int photcode, int *Nstars));
-Stars     *getusnob               PROTO((SkyRegion *catstats, int photcode, double epoch, int *Nstars));
+Stars     *getusnob               PROTO((SkyRegion *catstats, int photcode, int *Nstars));
 Image     *gimages                PROTO((FITS_DB *db, Image *image, Coords *mosaic, int *Npimage));
 Stars     *grefcat                PROTO((char *Refcat, SkyRegion *catstats, int photcode, int *nstars));
@@ -188,10 +189,10 @@
 
 /** 
-  there is an inconsistency to be resolved: fixed structures (like Image)
-  need a fixed bit-length time (e_time), but these functions all use the
-  UNIX time_t types, which may be 32 or 64 bits, depending on the machine.
-  This can be resolved by using time_t with these functions, but casting 
-  between e_time and time_t when necessary (ie, cannot return data to an
-  e_time pointer from one of these functions)
+    there is an inconsistency to be resolved: fixed structures (like Image)
+    need a fixed bit-length time (e_time), but these functions all use the
+    UNIX time_t types, which may be 32 or 64 bits, depending on the machine.
+    This can be resolved by using time_t with these functions, but casting 
+    between e_time and time_t when necessary (ie, cannot return data to an
+    e_time pointer from one of these functions)
 **/
 
Index: /trunk/Ohana/src/addstar/src/addstar.c
===================================================================
--- /trunk/Ohana/src/addstar/src/addstar.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/addstar.c	(revision 6683)
@@ -42,18 +42,18 @@
 
   switch (options.mode) {
-  case M_IMAGE:
-    stars = gstars (argv[1], &Nstars, options.photcode, &image);
-    if ((DUMP != NULL) && !strcmp (DUMP, "rawstars")) dump_rawstars (stars, Nstars);
-    RegisterMosaic (MOSAIC);
-    skylist = SkyListByImage (sky, -1, &image);
-    overlap = gimages (&db, &image, MOSAIC, &Noverlap);
-    break;
-  case M_REFLIST:
-    stars = grefstars (argv[1], options.photcode, &Nstars);
-    skylist = SkyListForStars (sky, -1, stars, Nstars);
-    break;
-  case M_REFCAT:
-    skylist = SkyListByPatch (sky, -1, &UserPatch);
-    break;
+    case M_IMAGE:
+      stars = gstars (argv[1], &Nstars, options.photcode, &image);
+      if ((DUMP != NULL) && !strcmp (DUMP, "rawstars")) dump_rawstars (stars, Nstars);
+      RegisterMosaic (MOSAIC);
+      skylist = SkyListByImage (sky, -1, &image);
+      overlap = gimages (&db, &image, MOSAIC, &Noverlap);
+      break;
+    case M_REFLIST:
+      stars = grefstars (argv[1], options.photcode, &Nstars);
+      skylist = SkyListForStars (sky, -1, stars, Nstars);
+      break;
+    case M_REFCAT:
+      skylist = SkyListByPatch (sky, -1, &UserPatch);
+      break;
   }
   if (options.only_match || options.existing_regions) {
@@ -97,19 +97,19 @@
 
     switch (options.mode) {
-    case M_IMAGE:
-      Nsubset = Nstars;
-      if (options.closest) {
-	find_matches_closest (skylist[0].regions[i], stars, Nstars, &catalog, &image, overlap, Noverlap, MOSAIC, options);
-      } else {
-	find_matches (skylist[0].regions[i], stars, Nstars, &catalog, &image, overlap, Noverlap, MOSAIC, options);
-      }
-      break;
-    case M_REFCAT:
-      stars = grefcat (argv[1], skylist[0].regions[i], options.photcode, &Nstars);
-    case M_REFLIST:
-      subset = find_subset (skylist[0].regions[i], stars, Nstars, &Nsubset);
-      find_matches_refstars (skylist[0].regions[i], subset, Nsubset, &catalog, options);
-      if (Nsubset) free (subset);
-      break;
+      case M_IMAGE:
+	Nsubset = Nstars;
+	if (options.closest) {
+	  find_matches_closest (skylist[0].regions[i], stars, Nstars, &catalog, &image, overlap, Noverlap, MOSAIC, options);
+	} else {
+	  find_matches (skylist[0].regions[i], stars, Nstars, &catalog, &image, overlap, Noverlap, MOSAIC, options);
+	}
+	break;
+      case M_REFCAT:
+	stars = grefcat (argv[1], skylist[0].regions[i], options.photcode, &Nstars);
+      case M_REFLIST:
+	subset = find_subset (skylist[0].regions[i], stars, Nstars, &Nsubset);
+	find_matches_refstars (skylist[0].regions[i], subset, Nsubset, &catalog, options);
+	if (Nsubset) free (subset);
+	break;
     }
 
Index: /trunk/Ohana/src/addstar/src/args.c
===================================================================
--- /trunk/Ohana/src/addstar/src/args.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/args.c	(revision 6683)
@@ -190,4 +190,14 @@
   if ((N = get_argument (argc, argv, "-accept"))) {
     ACCEPT_ASTROM = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-accept-astrom"))) {
+    ACCEPT_ASTROM = TRUE;
+    remove_argument (N, &argc, argv);
+  }
+  /* accept proper-motion data from reference */
+  ACCEPT_MOTION = FALSE;
+  if ((N = get_argument (argc, argv, "-accept-motion"))) {
+    ACCEPT_MOTION = TRUE;
     remove_argument (N, &argc, argv);
   }
@@ -258,4 +268,6 @@
   fprintf (stderr, "  -skyprobe             	  : specify skyprobe mode\n");
   fprintf (stderr, "  -accept               	  : accept bad astrometry from header\n");
+  fprintf (stderr, "  -accept-astrom          	  : accept bad astrometry from header\n");
+  fprintf (stderr, "  -accept-motion           	  : accept proper-motion data from reference\n");
   fprintf (stderr, "  -force                	  : force read of database with inconsistent info\n");
   fprintf (stderr, "  -v                    	  : verbose mode\n");
Index: /trunk/Ohana/src/addstar/src/find_matches.c
===================================================================
--- /trunk/Ohana/src/addstar/src/find_matches.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/find_matches.c	(revision 6683)
@@ -71,5 +71,5 @@
   /* build spatial index (RA sort) */
   for (i = 0; i < Nave; i++) {
-    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R_PS, catalog[0].average[i].D_PS, &tcoords);
+    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);
     N2[i] = i;
     catalog[0].found[N2[i]] = -1;
@@ -138,6 +138,6 @@
       /** add measurements for this star **/
       /** dR,dD now represent arcsec **/
-      catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R_PS - stars[N].R);
-      catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D_PS - stars[N].D);
+      catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R - stars[N].R);
+      catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D - stars[N].D);
       catalog[0].measure[Nmeas].M_PS        = MIN (stars[N].M + MTIME, NO_MAG);
       catalog[0].measure[Nmeas].dM_PS       = MIN (stars[N].dM, NO_ERR);  /* error in input files stored in thousandths of mag */
@@ -159,5 +159,5 @@
       /* check for entries in the secfilt lists */
       Mcat = PhotCat (&catalog[0].measure[Nmeas]);
-      Mval = (Nsec == -1) ? &catalog[0].average[n].M_PS : &catalog[0].secfilt[n*Nsecfilt+Nsec].M_PS;
+      Mval = (Nsec == -1) ? &catalog[0].average[n].M : &catalog[0].secfilt[n*Nsecfilt+Nsec].M_PS;
       if (*Mval == NO_MAG) *Mval = Mcat;
       /* in UPDATE mode, this value is not saved; use relphot to recalculate */
@@ -213,9 +213,9 @@
 
       /* should the catalog star be on this image? project into image coords */
-      if (!in_image (catalog[0].average[n].R_PS, catalog[0].average[n].D_PS, image)) continue;
+      if (!in_image (catalog[0].average[n].R, catalog[0].average[n].D, image)) continue;
       add_miss_link (&catalog[0].average[n], next_miss, Nmiss);
 
       /* calculate time of exposure for this coordinate in the image */
-      RD_to_XY (&X, &Y, catalog[0].average[n].R_PS, catalog[0].average[n].D_PS, &image[0].coords);	  
+      RD_to_XY (&X, &Y, catalog[0].average[n].R, catalog[0].average[n].D, &image[0].coords);	  
       catalog[0].missing[Nmiss].t  = image[0].tzero + 1e-4*Y*image[0].trate;  /* trate is in 0.1 msec / row */
       catalog[0].average[n].Nn ++;
@@ -245,8 +245,8 @@
     secz = airmass (image[0].secz_PS, stars[N].R, stars[N].D, image[0].sidtime, image[0].latitude);
 
-    catalog[0].average[Nave].R_PS      = stars[N].R;
-    catalog[0].average[Nave].D_PS      = stars[N].D;
-    catalog[0].average[Nave].M_PS      = NO_MAG;
-    catalog[0].average[Nave].dM_PS     = NO_MAG;
+    catalog[0].average[Nave].R         = stars[N].R;
+    catalog[0].average[Nave].D         = stars[N].D;
+    catalog[0].average[Nave].M         = NO_MAG;
+    catalog[0].average[Nave].dM        = NO_MAG;
     catalog[0].average[Nave].Nm        = 1;
     catalog[0].average[Nave].Nn        = 0;
@@ -257,4 +257,13 @@
     catalog[0].average[Nave].missing   = -1;
     catalog[0].average[Nave].code      = 0;
+
+    catalog[0].average[Nave].dR        = 0;
+    catalog[0].average[Nave].dD        = 0;
+    catalog[0].average[Nave].uR        = 0;
+    catalog[0].average[Nave].uD        = 0;
+    catalog[0].average[Nave].duR       = 0;
+    catalog[0].average[Nave].duD       = 0;
+    catalog[0].average[Nave].P         = 0;
+    catalog[0].average[Nave].dP        = 0;
 
     for (j = 0; j < Nsecfilt; j++) {
@@ -283,5 +292,5 @@
 
     Mcat = PhotCat (&catalog[0].measure[Nmeas]);
-    Mval = (Nsec == -1) ? &catalog[0].average[Nave].M_PS : &catalog[0].secfilt[Nave*Nsecfilt+Nsec].M_PS;
+    Mval = (Nsec == -1) ? &catalog[0].average[Nave].M : &catalog[0].secfilt[Nave*Nsecfilt+Nsec].M_PS;
     if (*Mval == NO_MAG) *Mval = Mcat;
 
@@ -295,9 +304,9 @@
       }
       if (!FindMosaicForImage (overlap, Noverlap, j)) continue;
-      if (!in_image (catalog[0].average[Nave].R_PS, catalog[0].average[Nave].D_PS, &overlap[j])) continue;
+      if (!in_image (catalog[0].average[Nave].R, catalog[0].average[Nave].D, &overlap[j])) continue;
       add_miss_link (&catalog[0].average[Nave], next_miss, Nmiss);
 
       /* get time of exposure of this portion of the image */
-      RD_to_XY (&X, &Y, catalog[0].average[Nave].R_PS, catalog[0].average[Nave].D_PS, &overlap[j].coords);	  
+      RD_to_XY (&X, &Y, catalog[0].average[Nave].R, catalog[0].average[Nave].D, &overlap[j].coords);	  
       catalog[0].missing[Nmiss].t  = overlap[j].tzero + 1e-4*Y*overlap[j].trate;  /* rough guess at time */
       catalog[0].average[Nave].Nn ++;
Index: /trunk/Ohana/src/addstar/src/find_matches_closest.c
===================================================================
--- /trunk/Ohana/src/addstar/src/find_matches_closest.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/find_matches_closest.c	(revision 6683)
@@ -71,5 +71,5 @@
   /* build spatial index (RA sort) */
   for (i = 0; i < Nave; i++) {
-    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R_PS, catalog[0].average[i].D_PS, &tcoords);
+    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);
     N2[i] = i;
     catalog[0].found[N2[i]] = -1;
@@ -154,6 +154,6 @@
     /** add measurements for this star **/
     /** dR,dD now represent arcsec **/
-    catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R_PS - stars[N].R);
-    catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D_PS - stars[N].D);
+    catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R - stars[N].R);
+    catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D - stars[N].D);
     catalog[0].measure[Nmeas].M_PS        = MIN (stars[N].M + MTIME, NO_MAG);
     catalog[0].measure[Nmeas].dM_PS       = MIN (stars[N].dM, NO_ERR);  /* error in input files stored in thousandths of mag */
@@ -175,5 +175,5 @@
     /* check for entries in the secfilt lists */
     Mcat = PhotCat (&catalog[0].measure[Nmeas]);
-    Mval = (Nsec == -1) ? &catalog[0].average[n].M_PS : &catalog[0].secfilt[n*Nsecfilt+Nsec].M_PS;
+    Mval = (Nsec == -1) ? &catalog[0].average[n].M : &catalog[0].secfilt[n*Nsecfilt+Nsec].M_PS;
     if (*Mval == NO_MAG) *Mval = Mcat;
     /* in UPDATE mode, this value is not saved; use relphot to recalculate */
@@ -211,9 +211,9 @@
 
       /* should the catalog star be on this image? project into image coords */
-      if (!in_image (catalog[0].average[n].R_PS, catalog[0].average[n].D_PS, image)) continue;
+      if (!in_image (catalog[0].average[n].R, catalog[0].average[n].D, image)) continue;
       add_miss_link (&catalog[0].average[n], next_miss, Nmiss);
 
       /* calculate time of exposure for this coordinate in the image */
-      RD_to_XY (&X, &Y, catalog[0].average[n].R_PS, catalog[0].average[n].D_PS, &image[0].coords);	  
+      RD_to_XY (&X, &Y, catalog[0].average[n].R, catalog[0].average[n].D, &image[0].coords);	  
       catalog[0].missing[Nmiss].t  = image[0].tzero + 1e-4*Y*image[0].trate;  /* trate is in 0.1 msec / row */
       catalog[0].average[n].Nn ++;
@@ -243,8 +243,8 @@
     secz = airmass (image[0].secz_PS, stars[N].R, stars[N].D, image[0].sidtime, image[0].latitude);
 
-    catalog[0].average[Nave].R_PS      = stars[N].R;
-    catalog[0].average[Nave].D_PS      = stars[N].D;
-    catalog[0].average[Nave].M_PS      = NO_MAG;
-    catalog[0].average[Nave].dM_PS     = NO_MAG;
+    catalog[0].average[Nave].R         = stars[N].R;
+    catalog[0].average[Nave].D         = stars[N].D;
+    catalog[0].average[Nave].M         = NO_MAG;
+    catalog[0].average[Nave].dM        = NO_MAG;
     catalog[0].average[Nave].Nm        = 1;
     catalog[0].average[Nave].Nn        = 0;
@@ -255,4 +255,13 @@
     catalog[0].average[Nave].missing   = -1;
     catalog[0].average[Nave].code      = 0;
+
+    catalog[0].average[Nave].dR        = 0;
+    catalog[0].average[Nave].dD        = 0;
+    catalog[0].average[Nave].uR        = 0;
+    catalog[0].average[Nave].uD        = 0;
+    catalog[0].average[Nave].duR       = 0;
+    catalog[0].average[Nave].duD       = 0;
+    catalog[0].average[Nave].P         = 0;
+    catalog[0].average[Nave].dP        = 0;
 
     for (j = 0; j < Nsecfilt; j++) {
@@ -281,5 +290,5 @@
 
     Mcat = PhotCat (&catalog[0].measure[Nmeas]);
-    Mval = (Nsec == -1) ? &catalog[0].average[Nave].M_PS : &catalog[0].secfilt[Nave*Nsecfilt+Nsec].M_PS;
+    Mval = (Nsec == -1) ? &catalog[0].average[Nave].M : &catalog[0].secfilt[Nave*Nsecfilt+Nsec].M_PS;
     if (*Mval == NO_MAG) *Mval = Mcat;
 
@@ -293,9 +302,9 @@
       }
       if (!FindMosaicForImage (overlap, Noverlap, j)) continue;
-      if (!in_image (catalog[0].average[Nave].R_PS, catalog[0].average[Nave].D_PS, &overlap[j])) continue;
+      if (!in_image (catalog[0].average[Nave].R, catalog[0].average[Nave].D, &overlap[j])) continue;
       add_miss_link (&catalog[0].average[Nave], next_miss, Nmiss);
 
       /* get time of exposure of this portion of the image */
-      RD_to_XY (&X, &Y, catalog[0].average[Nave].R_PS, catalog[0].average[Nave].D_PS, &overlap[j].coords);	  
+      RD_to_XY (&X, &Y, catalog[0].average[Nave].R, catalog[0].average[Nave].D, &overlap[j].coords);	  
       catalog[0].missing[Nmiss].t  = overlap[j].tzero + 1e-4*Y*overlap[j].trate;  /* rough guess at time */
       catalog[0].average[Nave].Nn ++;
Index: /trunk/Ohana/src/addstar/src/find_matches_refstars.c
===================================================================
--- /trunk/Ohana/src/addstar/src/find_matches_refstars.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/find_matches_refstars.c	(revision 6683)
@@ -62,5 +62,5 @@
   
   for (i = 0; i < Nave; i++) {
-    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R_PS, catalog[0].average[i].D_PS, &tcoords);
+    fRD_to_XY (&X2[i], &Y2[i], catalog[0].average[i].R, catalog[0].average[i].D, &tcoords);
     N2[i] = i;
     catalog[0].found[N2[i]] = -1;
@@ -128,15 +128,15 @@
       /** add measurements for this star **/
       /** *** dR,dD now in arcsec *** **/
-      catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R_PS - stars[N][0].R);
-      catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D_PS - stars[N][0].D);
+      catalog[0].measure[Nmeas].dR_PS       = 3600.0*(catalog[0].average[n].R - stars[N][0].R);
+      catalog[0].measure[Nmeas].dD_PS       = 3600.0*(catalog[0].average[n].D - stars[N][0].D);
       catalog[0].measure[Nmeas].M_PS        = MIN (stars[N][0].M,  NO_MAG);
       catalog[0].measure[Nmeas].dM_PS       = MIN (stars[N][0].dM, NO_ERR);
       catalog[0].measure[Nmeas].Mcal_PS     = 0;
-      catalog[0].measure[Nmeas].t        = (TIMEREF == 0) ? stars[N][0].t : TIMEREF; /** careful : time_t vs e_time **/
-      catalog[0].measure[Nmeas].averef   = n;
-      catalog[0].measure[Nmeas].source   = stars[N][0].code;
-      catalog[0].measure[Nmeas].dophot   = 0;
-      catalog[0].measure[Nmeas].flags    = 0;
-      catalog[0].measure[Nmeas].dt_PS    = 0xffff;
+      catalog[0].measure[Nmeas].t           = (TIMEREF == 0) ? stars[N][0].t : TIMEREF; /** careful : time_t vs e_time **/
+      catalog[0].measure[Nmeas].averef      = n;
+      catalog[0].measure[Nmeas].source      = stars[N][0].code;
+      catalog[0].measure[Nmeas].dophot      = 0;
+      catalog[0].measure[Nmeas].flags       = 0;
+      catalog[0].measure[Nmeas].dt_PS       = 0xffff;
 
       catalog[0].measure[Nmeas].Mgal_PS     = NO_MAG;
@@ -146,4 +146,13 @@
       catalog[0].measure[Nmeas].theta       = NO_ERR;
 	
+      if (ACCEPT_MOTION) {
+	catalog[0].average[n].uR          = stars[N][0].uR;
+	catalog[0].average[n].uD          = stars[N][0].uD;
+	catalog[0].average[n].duR         = stars[N][0].duR;
+	catalog[0].average[n].duD         = stars[N][0].duD;
+	catalog[0].average[n].P           = stars[N][0].P;
+	catalog[0].average[n].dP          = stars[N][0].dP;
+      }
+
       /** don't update average / secfilt values for REF photcodes **/
 
@@ -193,8 +202,29 @@
     if (stars[N][0].found >= 0) continue;
 
-    catalog[0].average[Nave].R_PS         = stars[N][0].R;
-    catalog[0].average[Nave].D_PS         = stars[N][0].D;
-    catalog[0].average[Nave].M_PS         = NO_MAG;
-    catalog[0].average[Nave].dM_PS        = NO_MAG;
+    catalog[0].average[Nave].R         = stars[N][0].R;
+    catalog[0].average[Nave].D         = stars[N][0].D;
+
+    if (ACCEPT_MOTION) {
+      catalog[0].average[Nave].dR    = stars[N][0].dR;
+      catalog[0].average[Nave].dD    = stars[N][0].dD;
+      catalog[0].average[Nave].uR    = stars[N][0].uR;
+      catalog[0].average[Nave].uD    = stars[N][0].uD;
+      catalog[0].average[Nave].duR   = stars[N][0].duR;
+      catalog[0].average[Nave].duD   = stars[N][0].duD;
+      catalog[0].average[Nave].P     = stars[N][0].P;
+      catalog[0].average[Nave].dP    = stars[N][0].dP;
+    } else {
+      catalog[0].average[Nave].dR    = 0;
+      catalog[0].average[Nave].dD    = 0;
+      catalog[0].average[Nave].uR    = 0;
+      catalog[0].average[Nave].uD    = 0;
+      catalog[0].average[Nave].duR   = 0;
+      catalog[0].average[Nave].duD   = 0;
+      catalog[0].average[Nave].P     = 0;
+      catalog[0].average[Nave].dP    = 0;
+    }
+
+    catalog[0].average[Nave].M         = NO_MAG;
+    catalog[0].average[Nave].dM        = NO_MAG;
     catalog[0].average[Nave].Nm        = 1;
     catalog[0].average[Nave].Nn        = 0;
@@ -217,9 +247,9 @@
     catalog[0].measure[Nmeas].dM_PS       = MIN (stars[N][0].dM, NO_ERR);
     catalog[0].measure[Nmeas].Mcal_PS     = 0;
-    catalog[0].measure[Nmeas].t        = (stars[N][0].t == 0) ? TIMEREF : stars[N][0].t; /** careful : time_t vs e_time **/
-    catalog[0].measure[Nmeas].averef   = Nave;
-    catalog[0].measure[Nmeas].source   = stars[N][0].code;
-    catalog[0].measure[Nmeas].dophot   = 0;
-    catalog[0].measure[Nmeas].flags    = 0;
+    catalog[0].measure[Nmeas].t        	  = (stars[N][0].t == 0) ? TIMEREF : stars[N][0].t; /** careful : time_t vs e_time **/
+    catalog[0].measure[Nmeas].averef   	  = Nave;
+    catalog[0].measure[Nmeas].source   	  = stars[N][0].code;
+    catalog[0].measure[Nmeas].dophot   	  = 0;
+    catalog[0].measure[Nmeas].flags    	  = 0;
     catalog[0].measure[Nmeas].dt_PS       = 0xffff;
 
Index: /trunk/Ohana/src/addstar/src/gettycho.c
===================================================================
--- /trunk/Ohana/src/addstar/src/gettycho.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/gettycho.c	(revision 6683)
@@ -6,5 +6,5 @@
 static SkyTable *tychoTable = NULL;
 
-Stars *gettycho (SkyRegion *catstats, int photcode, double epoch, int *nstars) {
+Stars *gettycho (SkyRegion *catstats, int photcode, int *nstars) {
 
   int i, j, nitems;
@@ -14,8 +14,9 @@
   int NTYCHO, Ntycho;
   int firstRow, firstByte;
-  Stars *stars;
   short int TYCHO_B, TYCHO_V;
+  e_time TychoEpoch;
   SkyRegion *region;
   SkyList  *skylist;
+  Stars *stars;
 
   /* require photcode */
@@ -47,4 +48,6 @@
 
   ALLOCATE (buffer, char, NITEM*NBYTE);
+
+  TychoEpoch = date_to_sec ("1991/04/02,07:30:00");
 
   for (i = 0; i < skylist[0].Nregions; i++) {
@@ -80,5 +83,20 @@
 	if (stars[Ntycho].D > UserPatch.Dmax) continue;
 
-	stars[Ntycho].t     = 0;
+	stars[Ntycho].dR  = 1000 * atof (&line[57]);
+	stars[Ntycho].dD  = 1000 * atof (&line[64]);
+
+	/* XXX : we need to apply uR,uD to R,D to advance to 2000.0 */
+	stars[Ntycho].uR  = atof (&line[41]);
+	stars[Ntycho].uD  = atof (&line[49]);
+
+	stars[Ntycho].duR = atof (&line[69]);
+	stars[Ntycho].duD = atof (&line[75]);
+	
+	stars[Ntycho].P   = 0;
+	stars[Ntycho].dP  = 0;
+
+	/* Tycho uses J2000 equinox and 1991.25 epoch for coordinates */
+	/* the magnitudes have no temporal information */ 
+	stars[Ntycho].t   = TychoEpoch;
 	stars[Ntycho].found = -1;
       
Index: /trunk/Ohana/src/addstar/src/getusnob.c
===================================================================
--- /trunk/Ohana/src/addstar/src/getusnob.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/getusnob.c	(revision 6683)
@@ -4,5 +4,5 @@
 # define NELEM  20
 
-Stars *getusnob (SkyRegion *catstats, int photcode, double epoch, int *nstars) {
+Stars *getusnob (SkyRegion *catstats, int photcode, int *nstars) {
 
   long int offset;
@@ -13,11 +13,11 @@
   FILE *f;
   double dec;
-  double uR, uD;
   float m1, m2, mag;
   int iDEC0, iDEC1, iRA0, iRA1;
   int spd, spd_start, spd_end;
   int NUSNO, Nusno, Nstars;
+  short int USNO_RED, USNO_BLUE;
+  e_time USNOepoch;
   Stars *stars;
-  short int USNO_RED, USNO_BLUE;
 
   /* require photcode */
@@ -110,4 +110,6 @@
     }
 
+    USNOepoch = date_to_sec ("2000/01/01,00:00:00");
+
     buf = buffer;
     /* print out data from slice within RA and DEC range */
@@ -118,21 +120,40 @@
       if (buf[1] > iDEC1) continue;
       
+      /* USNO coords are reported for J2000 / epoch 2000.0 */
       /* extract the basic stellar data */
       bzero (&stars[Nusno], sizeof(Stars));
-      stars[Nusno].R = buf[0]/360000.0;
-      stars[Nusno].D = buf[1]/360000.0 - 90.0;
-      stars[Nusno].dM    = NO_ERR;
-      stars[Nusno].t     = 0;
+      stars[Nusno].R   = buf[0]/360000.0;
+      stars[Nusno].D   = buf[1]/360000.0 - 90.0;
+
+      /* XXX uR cos(D) or just uR ??? */
+      stars[Nusno].uR  = 2.0 * ((buf[2]       % 10000) - 5000);
+      stars[Nusno].uD  = 2.0 * ((buf[2]/10000 % 10000) - 5000);
+
+      stars[Nusno].duR = (buf[3]      % 1000);
+      stars[Nusno].duD = (buf[3]/1000 % 1000);
+
+      stars[Nusno].dR  = 0.001 * (buf[4]      % 1000);
+      stars[Nusno].dD  = 0.001 * (buf[4]/1000 % 1000);
+
+      stars[Nusno].P   = 0;
+      stars[Nusno].dP  = 0;
+
+      /* USNO magnitude errors are reported as a fixed 0.3 mag */
+      stars[Nusno].dM    = 0.3;
       stars[Nusno].found = -1;
       
+      /* USNO-B uses J2000 equinox and 2000.0 epoch for coordinates */
+      /* the magnitudes have no temporal information */ 
+      stars[Nusno].t     = USNOepoch;
+
       /* one pass of addstar does either r or b */
-      if (photcode == USNO_RED) {
-	m1 = fabs(0.01 * (buf[7] % 10000)); /* 1st red mag */
+      if (photcode == USNO_BLUE) {
+	m1 = fabs(0.01 * (buf[5] % 10000)); /* 1st blue mag */
+	m2 = fabs(0.01 * (buf[7] % 10000)); /* 1st blue mag */
+	stars[Nusno].code  = USNO_BLUE;
+      } else {
+	m1 = fabs(0.01 * (buf[6] % 10000)); /* 1st red mag */
 	m2 = fabs(0.01 * (buf[8] % 10000)); /* 2nd red mag */
 	stars[Nusno].code  = USNO_RED;
-      } else {
-	m1 = fabs(0.01 * (buf[5] % 10000)); /* 1st blue mag */
-	m2 = fabs(0.01 * (buf[6] % 10000)); /* 1st blue mag */
-	stars[Nusno].code  = USNO_BLUE;
       }	
 
@@ -143,14 +164,6 @@
 	mag = (m1) ? m1 : m2;
       }
+      stars[Nusno].M = (mag == 0.0) ? 32.0 : mag;
 
-      uR = (buf[2] % 10000);
-      uR = (uR - 5000.0) * 0.002 / 3600.0;
-      uD = ((buf[2] / 10000) % 10000);
-      uD = (uD - 5000.0) * 0.002 / 3600.0;
-
-      /* need to carry the proper motions */
-      stars[Nusno].M = (mag == 0.0) ? 32.0 : mag;
-      stars[Nusno].R += uR*(epoch - 2000.0);
-      stars[Nusno].D += uD*(epoch - 2000.0);
       Nusno ++;
       CHECK_REALLOCATE (stars, Stars, NUSNO, Nusno, 5000);
Index: /trunk/Ohana/src/addstar/src/greference.c
===================================================================
--- /trunk/Ohana/src/addstar/src/greference.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/greference.c	(revision 6683)
@@ -21,10 +21,10 @@
   /* get stars from the USNO B catalog for the given region */
   if (!strcasecmp (Refcat, "USNOB")) {
-    stars = getusnob (region, photcode, 2000.0, &Nstars);
+    stars = getusnob (region, photcode, &Nstars);
   }
 
   /* get stars from the USNO B catalog for the given region */
   if (!strcasecmp (Refcat, "TYCHO")) {
-    stars = gettycho (region, photcode, 2000.0, &Nstars);
+    stars = gettycho (region, photcode, &Nstars);
   }
 
Index: /trunk/Ohana/src/addstar/src/replace_match.c
===================================================================
--- /trunk/Ohana/src/addstar/src/replace_match.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/replace_match.c	(revision 6683)
@@ -8,6 +8,6 @@
   for (i = 0; i < average[0].Nm; i++) {
     if (measure[i].source != star[0].code) continue;
-    measure[i].dR_PS       = 3600.0*(average[0].R_PS - star[0].R);
-    measure[i].dD_PS       = 3600.0*(average[0].D_PS - star[0].D);
+    measure[i].dR_PS       = 3600.0*(average[0].R - star[0].R);
+    measure[i].dD_PS       = 3600.0*(average[0].D - star[0].D);
     measure[i].M_PS        = MIN (star[0].M,  NO_MAG);
     measure[i].dM_PS       = MIN (star[0].dM, NO_ERR);
Index: /trunk/Ohana/src/addstar/src/update_coords.c
===================================================================
--- /trunk/Ohana/src/addstar/src/update_coords.c	(revision 6682)
+++ /trunk/Ohana/src/addstar/src/update_coords.c	(revision 6683)
@@ -33,6 +33,6 @@
   r = r / Npt;  /* these are corrections in 1/100 arcsec to RA and DEC */
   d = d / Npt;
-  average[0].R_PS -= r / 3600.0;
-  average[0].D_PS -= d / 3600.0;
+  average[0].R -= r / 3600.0;
+  average[0].D -= d / 3600.0;
   m = average[0].offset;  /* first measurement of this star */
   for (i = 0; i < average[0].Nm; i++) {
Index: /trunk/Ohana/src/gastro/src/gptolemy.c
===================================================================
--- /trunk/Ohana/src/gastro/src/gptolemy.c	(revision 6682)
+++ /trunk/Ohana/src/gastro/src/gptolemy.c	(revision 6683)
@@ -16,10 +16,10 @@
   catalog.filename = filename;
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 0:
-  case 2:
-    fprintf (stderr, "can't load catalog data\n");
-    return (FALSE);
-  case 1:
-    break;
+    case 0:
+    case 2:
+      fprintf (stderr, "can't load catalog data\n");
+      return (FALSE);
+    case 1:
+      break;
   }
 
@@ -44,6 +44,6 @@
   /* select all entries, ignore magnitudes */
   for (i = 0; i < catalog.Naverage; i++, nstar++) {
-    stars[0][nstar].X = catalog.average[i].R_PS;
-    stars[0][nstar].Y = catalog.average[i].D_PS;
+    stars[0][nstar].X = catalog.average[i].R;
+    stars[0][nstar].Y = catalog.average[i].D;
     stars[0][nstar].mag = catalog.measure[catalog.average[i].offset].M_PS;
   }
@@ -52,9 +52,9 @@
 # if (0)  
   for (i = 0; i < catalog.Naverage; i++, nstar++) {
-    stars[0][nstar].X = catalog.average[i].R_PS;
-    stars[0][nstar].Y = catalog.average[i].D_PS;
+    stars[0][nstar].X = catalog.average[i].R;
+    stars[0][nstar].Y = catalog.average[i].D;
     GotIt = FALSE;
-    if (catalog.average[i].M_PS != NO_MAG) {
-      stars[0][nstar].mag = catalog.average[i].M_PS;
+    if (catalog.average[i].M != NO_MAG) {
+      stars[0][nstar].mag = catalog.average[i].M;
       GotIt = TRUE;
     }
Index: /trunk/Ohana/src/gastro2/src/gptolemy2.c
===================================================================
--- /trunk/Ohana/src/gastro2/src/gptolemy2.c	(revision 6682)
+++ /trunk/Ohana/src/gastro2/src/gptolemy2.c	(revision 6683)
@@ -18,10 +18,10 @@
   catalog.filename = filename;
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 0:
-  case 2:
-    fprintf (stderr, "can't lock catalog data %s\n", filename);
-    return ((GSCdata *)NULL);
-  case 1:
-    break;
+    case 0:
+    case 2:
+      fprintf (stderr, "can't lock catalog data %s\n", filename);
+      return ((GSCdata *)NULL);
+    case 1:
+      break;
   }
 
@@ -42,6 +42,6 @@
   /* select all entries, ignore magnitudes */
   for (i = 0; i < catalog.Naverage; i++, nstar++) {
-    stars[nstar].R = catalog.average[i].R_PS;
-    stars[nstar].D = catalog.average[i].D_PS;
+    stars[nstar].R = catalog.average[i].R;
+    stars[nstar].D = catalog.average[i].D;
     stars[nstar].M = catalog.measure[catalog.average[i].offset].M_PS;
   }
Index: /trunk/Ohana/src/libautocode/Makefile
===================================================================
--- /trunk/Ohana/src/libautocode/Makefile	(revision 6682)
+++ /trunk/Ohana/src/libautocode/Makefile	(revision 6683)
@@ -29,4 +29,5 @@
 $(SRC)/average-elixir.$(ARCH).o \
 $(SRC)/average-panstarrs.$(ARCH).o \
+$(SRC)/average-pmtest.$(ARCH).o \
 $(SRC)/secfilt.$(ARCH).o \
 $(SRC)/secfilt-loneos.$(ARCH).o \
@@ -61,4 +62,5 @@
 $(INC)/average-elixir.h \
 $(INC)/average-panstarrs.h \
+$(INC)/average-pmtest.h \
 $(INC)/secfilt.h \
 $(INC)/secfilt-loneos.h \
Index: /trunk/Ohana/src/libautocode/def/Stars.d
===================================================================
--- /trunk/Ohana/src/libautocode/def/Stars.d	(revision 6682)
+++ /trunk/Ohana/src/libautocode/def/Stars.d	(revision 6683)
@@ -2,23 +2,34 @@
 EXTNAME STARS
 TYPE    BINTABLE
-SIZE    128
+SIZE    176
 
-FIELD     X,                X,            	  double,         x coordinate on image
-FIELD     Y,                Y,            	  double,         y coordinate on image
-FIELD     R,                R,            	  double,         ra coordinate on sky
-FIELD     D,                D,            	  double,         dec coordinate on sky
-FIELD     uR,               uR,            	  double,         proper motion in RA
-FIELD     uD,               uD,            	  double,         proper motion in DEC 
-FIELD     M,                M,            	  double,         instrumental mag
-FIELD     dM,               DM,           	  double,         error on mag
-FIELD     sky,              SKY,          	  double,         local sky counts
-FIELD     fx,               FX,           	  double,         object FWHM x-dir
-FIELD     fy,               FY,           	  double,         object FWHM y-dir
-FIELD     df,               DF,           	  double,         object position angle
-FIELD     Mgal,             MGAL,         	  double,         alternative (galaxy) magnitude
-FIELD     Map,              MAP,          	  double,         alternative (aperture) magnitude
-FIELD     found,            FOUND,        	  int,            found in database catalog?
-FIELD     t,                T,            	  e_time,         date/time of exposure (UNIX)
-FIELD     code,             CODE,         	  short,          .
-FIELD     dophot,           DOPHOT,       	  char,           dophot type code
-FIELD     dummy,            DUMMY,         	  char[5],        .
+FIELD     X,                X,          double,    x coordinate on image,	     pixels
+FIELD     Y,                Y,          double,    y coordinate on image,	     pixels
+FIELD     R,                R,          double,    ra coordinate on sky,	     decimal degrees
+FIELD     D,                D,          double,    dec coordinate on sky,	     decimal degrees
+FIELD     dR,               dR,         double,    ra error,			     arcsec
+FIELD     dD,               dD,         double,    dec error,			     arcsec
+FIELD     uR,               U_RA,       double,    proper motion in RA,		     milliarcsec/year
+FIELD     uD,               U_DEC,      double,    proper motion in DEC,	     milliarcsec/year
+FIELD     duR,              U_RA_ERR,   double,    p-m error in RA,		     milliarcsec/year
+FIELD     duD,              U_DEC_ERR,  double,    p-m error in DEC,		     milliarcsec/year
+FIELD     P,                PAR,        double,    parallax,			     milliarcsec
+FIELD     dP,               PAR_ERR,    double,    parallax error,		     milliarcsec
+FIELD     M,                M,          double,    instrumental mag
+FIELD     dM,               DM,         double,    error on mag
+FIELD     sky,              SKY,        double,    local sky counts
+FIELD     fx,               FX,         double,    object FWHM x-dir,		     pixels?
+FIELD     fy,               FY,         double,    object FWHM y-dir,		     pixels?
+FIELD     df,               DF,         double,    object position angle,	     degrees
+FIELD     Mgal,             MGAL,       double,    alternative (galaxy) magnitude
+FIELD     Map,              MAP,        double,    alternative (aperture) magnitude
+FIELD     found,            FOUND,      int,       found in database catalog?
+FIELD     t,                T,          e_time,    date/time of exposure (UNIX)
+FIELD     code,             CODE,       short,     .
+FIELD     dophot,           DOPHOT,     char,      dophot type code
+FIELD     dummy,            DUMMY,      char[5],   .
+
+# this structure is only used internally and for interprocess communication (addstar)
+# dR, uR, etc should be better defined at the pole...
+# define down the types to floats where reasonable (all but R,D)?
+# R,D should be in ICRS, J2000, epoch 2000 : precess as needed, apply p-m as needed
Index: /trunk/Ohana/src/libautocode/def/average-panstarrs.d
===================================================================
--- /trunk/Ohana/src/libautocode/def/average-panstarrs.d	(revision 6682)
+++ /trunk/Ohana/src/libautocode/def/average-panstarrs.d	(revision 6683)
@@ -18,3 +18,5 @@
 FIELD offset,         offset,     int,     	    offset to first measurement
 FIELD missing,        missing,    int,     	    offset to first missing obs
-FIELD dummy,          dummmy,     int,              extra space
+FIELD dummy,          dummy,      int,              extra space
+
+# change this table eventually to a temp name and provide a script to fix existing DBs
Index: /trunk/Ohana/src/libautocode/def/average-pmtest.d
===================================================================
--- /trunk/Ohana/src/libautocode/def/average-pmtest.d	(revision 6683)
+++ /trunk/Ohana/src/libautocode/def/average-pmtest.d	(revision 6683)
@@ -0,0 +1,31 @@
+STRUCT       AveragePMtest
+EXTNAME      DVO_AVERAGE_PMTEST
+TYPE         BINTABLE
+SIZE         76
+DESCRIPTION  DVO Average Object Table
+
+# elements of data structure / FITS table
+
+FIELD R,              RA,         double,           RA,                	       	  decimal degrees 
+FIELD D,              DEC,        double,           DEC,               	       	  decimal degrees 
+FIELD dR,             RA_ERR,     float,            RA error                      arcsec
+FIELD dD,             DEC_ERR,    float,            DEC error                     arcsec
+
+FIELD uR,             U_RA,       float,            RA*cos(D) proper-motion,      arcsec/year
+FIELD uD,             U_DEC,      float,            DEC proper-motion,            arcsec/year
+FIELD duR,            V_RA_ERR,   float,            RA*cos(D) p-m error,          arcsec/year
+FIELD duD,            V_DEC_ERR,  float,            DEC p-m error,                arcsec/year
+FIELD P,              PAR,        float,            parallax,			  arcsec
+FIELD dP,             PAR_ERR,    float,            parallax error,               arcsec
+
+FIELD M,              MAG,        float,            primary mag,       	       	  mag
+FIELD dM,             MAG_ERR,    float,            error on primary mag,         mag
+FIELD Xp,             SIGMA_POS,  short, 	    position scatter,   	  1/100 arcsec
+FIELD Xm,             CHISQ_MAG,  short, 	    chisq for primary mag,        [100*log(value)]
+FIELD Xg,             CHISQ_GAL,  short,            chisq for galaxy mags,        [100*log(value)]
+FIELD Nm,             NMEAS,      unsigned short,   number of measures
+FIELD Nn,             NMISS,      unsigned short,   number of missings
+FIELD code,           code,       unsigned short,   ID code (star ghost etc)
+FIELD offset,         offset,     int,     	    offset to first measurement
+FIELD missing,        missing,    int,     	    offset to first missing obs
+
Index: /trunk/Ohana/src/libautocode/def/average.d
===================================================================
--- /trunk/Ohana/src/libautocode/def/average.d	(revision 6682)
+++ /trunk/Ohana/src/libautocode/def/average.d	(revision 6683)
@@ -2,13 +2,23 @@
 EXTNAME      DVO_AVERAGE
 TYPE         BINTABLE
-SIZE         44
+SIZE         76
 DESCRIPTION  DVO Average Object Table
 
 # elements of data structure / FITS table
 
-FIELD R_PS,           RA,         double,           RA,                	       	  decimal degrees 
-FIELD D_PS,           DEC,        double,           DEC,               	       	  decimal degrees 
-FIELD M_PS,           MAG,        float,            primary mag,       	       	  mag
-FIELD dM_PS,          MAG_ERR,    float,            error on primary mag,         mag
+FIELD R,              RA,         double,           RA,                	       	  decimal degrees 
+FIELD D,              DEC,        double,           DEC,               	       	  decimal degrees 
+FIELD dR,             RA_ERR,     float,            RA error                      arcsec
+FIELD dD,             DEC_ERR,    float,            DEC error                     arcsec
+
+FIELD uR,             U_RA,       float,            RA*cos(D) proper-motion,      arcsec/year
+FIELD uD,             U_DEC,      float,            DEC proper-motion,            arcsec/year
+FIELD duR,            V_RA_ERR,   float,            RA*cos(D) p-m error,          arcsec/year
+FIELD duD,            V_DEC_ERR,  float,            DEC p-m error,                arcsec/year
+FIELD P,              PAR,        float,            parallax,			  arcsec
+FIELD dP,             PAR_ERR,    float,            parallax error,               arcsec
+
+FIELD M,              MAG,        float,            primary mag,       	       	  mag
+FIELD dM,             MAG_ERR,    float,            error on primary mag,         mag
 FIELD Xp,             SIGMA_POS,  short, 	    position scatter,   	  1/100 arcsec
 FIELD Xm,             CHISQ_MAG,  short, 	    chisq for primary mag,        [100*log(value)]
@@ -20,9 +30,4 @@
 FIELD missing,        missing,    int,     	    offset to first missing obs
 
-# 
-# V_RA,   float,            proper-motion (arcsec/year),
-# V_DEC   float,            proper-motion (arcsec/year),
-# PAR     float             parallax (arcseconds)
-# D_V_RA  float,            proper-motion error (arcsec/year),
-# D_V_DEC float,            proper-motion error (arcsec/year),
-# D_PAR   float             parallax error (arcseconds)
+# this structure should only be used for internal representations
+# the average-FORMAT structures should be used for external representations
Index: /trunk/Ohana/src/libdvo/Makefile
===================================================================
--- /trunk/Ohana/src/libdvo/Makefile	(revision 6682)
+++ /trunk/Ohana/src/libdvo/Makefile	(revision 6683)
@@ -41,4 +41,5 @@
 $(SRC)/dvo_convert_loneos.$(ARCH).o    \
 $(SRC)/dvo_convert_panstarrs.$(ARCH).o \
+$(SRC)/dvo_convert_pmtest.$(ARCH).o \
 $(SRC)/skyregion_io.$(ARCH).o    \
 $(SRC)/skyregion_gsc.$(ARCH).o    \
@@ -51,4 +52,5 @@
 $(ASRC)/average-elixir.$(ARCH).o \
 $(ASRC)/average-panstarrs.$(ARCH).o \
+$(ASRC)/average-pmtest.$(ARCH).o \
 $(ASRC)/secfilt.$(ARCH).o \
 $(ASRC)/secfilt-loneos.$(ARCH).o \
Index: /trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvo.h	(revision 6682)
+++ /trunk/Ohana/src/libdvo/include/dvo.h	(revision 6683)
@@ -6,7 +6,9 @@
 # define DVO_H
 
-# define ELIXIR 1
-# define PANSTARRS 0
-# define LONEOS 0
+/*
+  # define ELIXIR 1
+  # define PANSTARRS 0
+  # define LONEOS 0
+*/
 
 /*** named data values (convert all to enums?) ***/
@@ -16,5 +18,5 @@
 
 /* DVO table formats */
-enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS} DVOTableFormat;
+enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS, DVO_FORMAT_PMTEST} DVOTableFormat;
 
 /* image data modes in RegImage */
@@ -63,10 +65,10 @@
 /* some subtle distinctions between the blend flags:
    BLEND_IMAGE: the star on an image is matched with more 
-      than one star in the catalog (image has worse seeing than catalog)
+   than one star in the catalog (image has worse seeing than catalog)
    BLEND_CATALOG: the star in the catalog is matched with more 
-      than one star on the image (image has better seeing than catalog)
+   than one star on the image (image has better seeing than catalog)
    CALIBRATED: relative photometry has been performed on this measurement
    BLEND_IMAGE_NEIGHBOR: the star on an image is matched with more 
-      than one star in the catalog, but not in the same catalog file.
+   than one star in the catalog, but not in the same catalog file.
 */
 
@@ -285,7 +287,9 @@
 Average *AverageElixirToInternal (AverageElixir *in, int Nvalues);
 Average *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
+Average *AveragePMtestToInternal (AveragePMtest *in, int Nvalues);
 AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues);
 AverageElixir *AverageInternalToElixir (Average *in, int Nvalues);
 AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues);
+AveragePMtest *AverageInternalToPMtest (Average *in, int Nvalues);
 
 Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format);
Index: /trunk/Ohana/src/libdvo/src/LoadPhotcodes.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/LoadPhotcodes.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/LoadPhotcodes.c	(revision 6683)
@@ -630,6 +630,6 @@
     Ns2 = photcodes[0].hashNsec[code[0].c2];
   
-    m1 = (Ns1 == -1) ? average[0].M_PS : secfilt[Ns1].M_PS;
-    m2 = (Ns2 == -1) ? average[0].M_PS : secfilt[Ns2].M_PS;
+    m1 = (Ns1 == -1) ? average[0].M : secfilt[Ns1].M_PS;
+    m2 = (Ns2 == -1) ? average[0].M : secfilt[Ns2].M_PS;
     mc = ((m1 == NO_MAG_PS) || (m2 == NO_MAG_PS)) ? NO_MAG_PS : (m1 - m2);
     return (mc);
@@ -647,5 +647,5 @@
   } else {
     Ns = photcodes[0].hashNsec[color[0].code];
-    m1 = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+    m1 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   }	
 
@@ -661,5 +661,5 @@
   } else {
     Ns = photcodes[0].hashNsec[color[0].code];
-    m2 = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+    m2 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   }	
   mc = ((m1 == NO_MAG_PS) || (m2 == NO_MAG_PS)) ? NO_MAG_PS : (m1 - m2);
@@ -675,5 +675,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  Mave = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+  Mave = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   Mref = Mave + F_PS*code[0].C;
 
@@ -699,5 +699,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  Mave = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+  Mave = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   return (Mave);
 }
@@ -710,5 +710,5 @@
 
   Ns = photcodes[0].hashNsec[code[0].code];
-  dM  = (Ns == -1) ? average[0].dM_PS : secfilt[Ns].dM_PS;
+  dM  = (Ns == -1) ? average[0].dM : secfilt[Ns].dM_PS;
   return (dM);
 }
@@ -746,8 +746,8 @@
   } else {
     Ns = photcodes[0].hashNsec[code[0].code];
-    M1 = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+    M1 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   }	
 
- filter1:
+filter1:
   code = GetPhotcodebyCode (c2);
   if (code == NULL) return (FALSE);
@@ -762,8 +762,8 @@
   } else {
     Ns = photcodes[0].hashNsec[code[0].code];
-    M2 = (Ns == -1) ? average[0].M_PS : secfilt[Ns].M_PS;
+    M2 = (Ns == -1) ? average[0].M : secfilt[Ns].M_PS;
   }	
   
- filter2:
+filter2:
 
   dM = M1 - M2;
@@ -776,8 +776,8 @@
 
 # code name     type  zero  airmass  offset  c1 c2  slope  <color>  primary
-  1    B        pri   24.0  0.15     -       -  -   -      -        -
-  2    B        pri   24.0  0.15     -       -  -   -      -        -
-  3    B1       sec   22.5  0.18     0.15    1  2   0.10   0.50     1
-  1000 USNO_B   ref   -     -        -       -  -   -      -        -
+1    B        pri   24.0  0.15     -       -  -   -      -        -
+2    B        pri   24.0  0.15     -       -  -   -      -        -
+3    B1       sec   22.5  0.18     0.15    1  2   0.10   0.50     1
+1000 USNO_B   ref   -     -        -       -  -   -      -        -
 
 */
Index: /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c	(revision 6683)
@@ -32,4 +32,5 @@
     if (!strcmp (format, "ELIXIR")) catalog[0].catformat = DVO_FORMAT_ELIXIR;
     if (!strcmp (format, "PANSTARRS")) catalog[0].catformat = DVO_FORMAT_PANSTARRS;
+    if (!strcmp (format, "PMTEST")) catalog[0].catformat = DVO_FORMAT_PMTEST;
     if (catalog[0].catformat != DVO_FORMAT_UNDEF) goto got_format;
   }
@@ -71,4 +72,9 @@
     case DVO_FORMAT_PANSTARRS:
       AverageSize = sizeof(AveragePanstarrs);
+      MeasureSize = sizeof(MeasurePanstarrs);
+      SecFiltSize = sizeof (SecFiltPanstarrs);
+      break;
+    case DVO_FORMAT_PMTEST:
+      AverageSize = sizeof(AveragePMtest);
       MeasureSize = sizeof(MeasurePanstarrs);
       SecFiltSize = sizeof (SecFiltPanstarrs);
@@ -157,5 +163,5 @@
 
   if (VERBOSE) fprintf (stderr, "read %d stars from catalog file %s (%d measurements, %d missing, %d secondary filters)\n", 
-	   catalog[0].Naverage, catalog[0].filename, catalog[0].Nmeasure, catalog[0].Nmissing, catalog[0].Nsecfilt);
+			catalog[0].Naverage, catalog[0].filename, catalog[0].Nmeasure, catalog[0].Nmissing, catalog[0].Nsecfilt);
 
   /* check data integrity */
@@ -198,4 +204,5 @@
   if (catalog[0].catformat == DVO_FORMAT_ELIXIR)    fits_modify (&catalog[0].header, "FORMAT", "%s", 1, "ELIXIR");
   if (catalog[0].catformat == DVO_FORMAT_PANSTARRS) fits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PANSTARRS");
+  if (catalog[0].catformat == DVO_FORMAT_PMTEST)    fits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PMTEST");
 
   /* rewind file pointers and truncate file */
@@ -243,4 +250,5 @@
   AverageLoneos *tmpAverageLoneos;
   AveragePanstarrs *tmpAveragePanstarrs;
+  AveragePMtest *tmpAveragePMtest;
 
   switch (format) {
@@ -287,4 +295,15 @@
       free (tmpAveragePanstarrs);
       break;
+    case DVO_FORMAT_PMTEST:
+      ALLOCATE (tmpAveragePMtest, AveragePMtest, MAX (Naverage, 1));
+      nitems = fread (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f);
+      if (nitems != Naverage) {
+	fprintf (stderr, "failed to read averages (%d vs %d)\n", nitems, Naverage);
+	return (NULL);
+      }
+      fits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage);
+      average = AveragePMtestToInternal (tmpAveragePMtest, Naverage);
+      free (tmpAveragePMtest);
+      break;
     default:
       fprintf (stderr, "error reading measures\n");
@@ -302,4 +321,5 @@
   AverageLoneos *tmpAverageLoneos;
   AveragePanstarrs *tmpAveragePanstarrs;
+  AveragePMtest *tmpAveragePMtest;
 
   switch (format) {
@@ -342,4 +362,14 @@
       }
       break;
+    case DVO_FORMAT_PMTEST:
+      tmpAveragePMtest = AverageInternalToPMtest (average, Naverage);
+      fits_convert_AveragePMtest (tmpAveragePMtest, sizeof(AveragePMtest), Naverage);
+      nitems = fwrite (tmpAveragePMtest, sizeof(AveragePMtest), Naverage, f);
+      free (tmpAveragePMtest);
+      if (nitems != Naverage) {
+	fprintf (stderr, "failed to write averages (%d vs %d)\n", nitems, Naverage);
+	return (FALSE);
+      }
+      break;
     default:
       fprintf (stderr, "error writing averages\n");
@@ -392,4 +422,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       ALLOCATE (tmpMeasurePanstarrs, MeasurePanstarrs, MAX (Nmeasure, 1));
       nitems = fread (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure, f);
@@ -448,4 +479,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       tmpMeasurePanstarrs = MeasureInternalToPanstarrs (measure, Nmeasure);
       fits_convert_MeasurePanstarrs (tmpMeasurePanstarrs, sizeof(MeasurePanstarrs), Nmeasure);
@@ -507,4 +539,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       ALLOCATE (tmpSecFiltPanstarrs, SecFiltPanstarrs, MAX (Nsecfilt, 1));
       nitems = fread (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt, f);
@@ -563,4 +596,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       tmpSecFiltPanstarrs = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
       fits_convert_SecFiltPanstarrs (tmpSecFiltPanstarrs, sizeof(SecFiltPanstarrs), Nsecfilt);
Index: /trunk/Ohana/src/libdvo/src/dvo_convert.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/dvo_convert.c	(revision 6683)
@@ -6,5 +6,5 @@
    The TYPE-Ftable conversions functions create output tables in the format requested
    by the 'format' function parameter.
- */
+*/
 
 /** this file might be more readable if I use macros for the repetative
@@ -52,4 +52,12 @@
     return (average);
   }
+  if (!strcmp (extname, "DVO_AVERAGE_PMTEST")) {
+    AveragePMtest *tmpAverage;
+    tmpAverage = fits_table_get_AveragePMtest (ftable, Naverage, NULL);
+    average = AveragePMtestToInternal (tmpAverage, *Naverage);
+    free (tmpAverage);
+    *format = DVO_FORMAT_PMTEST;
+    return (average);
+  }
 
   fprintf (stderr, "table format unknown: %s\n", extname);
@@ -64,4 +72,5 @@
   AverageLoneos *tmpAverageLoneos ;
   AveragePanstarrs *tmpAveragePanstarrs;
+  AveragePMtest *tmpAveragePMtest;
 
   /* convert from the internal format */
@@ -84,4 +93,9 @@
       fits_table_set_AveragePanstarrs (ftable, tmpAveragePanstarrs, Naverage);
       free (tmpAveragePanstarrs);
+      break;
+    case DVO_FORMAT_PMTEST:
+      tmpAveragePMtest = AverageInternalToPMtest (average, Naverage);
+      fits_table_set_AveragePMtest (ftable, tmpAveragePMtest, Naverage);
+      free (tmpAveragePMtest);
       break;
     default:
@@ -125,5 +139,5 @@
     return (measure);
   }
-  if (!strcmp (extname, "DVO_MEASURE_PANSTARRS")) {
+  if (!strcmp (extname, "DVO_MEASURE_PANSTARRS") || !strcmp (extname, "DVO_MEASURE_PMTEST")) {
     MeasurePanstarrs *tmpMeasure;
     tmpMeasure = fits_table_get_MeasurePanstarrs (ftable, Nmeasure, NULL);
@@ -162,4 +176,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       tmpMeasurePanstarrs = MeasureInternalToPanstarrs (measure, Nmeasure);
       fits_table_set_MeasurePanstarrs (ftable, tmpMeasurePanstarrs, Nmeasure);
@@ -206,5 +221,5 @@
     return (secfilt);
   }
-  if (!strcmp (extname, "DVO_SECFILT_PANSTARRS")) {
+  if (!strcmp (extname, "DVO_SECFILT_PANSTARRS") || !strcmp (extname, "DVO_SECFILT_PMTEST")) {
     SecFiltPanstarrs *tmpSecFilt;
     tmpSecFilt = fits_table_get_SecFiltPanstarrs (ftable, Nsecfilt, NULL);
@@ -243,4 +258,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       tmpSecFiltPanstarrs = SecFiltInternalToPanstarrs (secfilt, Nsecfilt);
       fits_table_set_SecFiltPanstarrs (ftable, tmpSecFiltPanstarrs, Nsecfilt);
@@ -297,5 +313,5 @@
     goto set_header;
   }
-  if (!strcmp (extname, "DVO_IMAGE_PANSTARRS")) {
+  if (!strcmp (extname, "DVO_IMAGE_PANSTARRS") || !strcmp (extname, "DVO_IMAGE_PMTEST")) {
     ImagePanstarrs *tmpimage;
     *format = DVO_FORMAT_PANSTARRS;
@@ -344,4 +360,5 @@
       break;
     case DVO_FORMAT_PANSTARRS:
+    case DVO_FORMAT_PMTEST:
       tmpImagePanstarrs = ImageInternalToPanstarrs ((Image *) ftable[0].buffer, Nimage);
       free (ftable[0].buffer);
@@ -358,4 +375,7 @@
 int ImageToVtable (VTable *vtable, Header *theader, int format) {
 
+  ImageElixir *tmpImageElixir;
+  ImageLoneos *tmpImageLoneos;
+  ImagePanstarrs *tmpImagePanstarrs;
   int i, Nrow, Nimage;
 
@@ -363,73 +383,67 @@
 
   /* convert from the internal format */
-  if (format == DVO_FORMAT_INTERNAL) {
-    for (i = 0; i < Nrow; i++) {
-      fits_convert_Image ((Image *) vtable[0].buffer[i], sizeof(Image), 1);
-    }
-    return (TRUE);
-  }
-  if (format == DVO_FORMAT_ELIXIR) {
-    ImageElixir *tmpImage;
-
-    /* convert table rows from internal to external format */
-    for (i = 0; i < Nrow; i++) {
-      tmpImage = ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1);
-      fits_convert_ImageElixir (tmpImage, sizeof(ImageElixir), 1);
-      free (vtable[0].buffer[i]);
-      vtable[0].buffer[i] = (char *) tmpImage;
-    }
-
-    /* convert header from old format to new format */
-    fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
-
-    fits_free_header (theader);
-    fits_table_mkheader_ImageElixir (theader);
-
-    fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
-    theader[0].Naxis[1] = Nimage;
-    vtable[0].size = fits_matrix_size (theader);
-    return (TRUE);
-  }
-  if (format == DVO_FORMAT_LONEOS) {
-    ImageLoneos *tmpImage;
-
-    /* convert table rows from internal to external format */
-    for (i = 0; i < Nrow; i++) {
-      tmpImage = ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1);
-      fits_convert_ImageLoneos (tmpImage, sizeof(ImageLoneos), 1);
-      free (vtable[0].buffer[i]);
-      vtable[0].buffer[i] = (char *) tmpImage;
-    }
-
-    /* convert header from old format to new format */
-    fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
-
-    fits_free_header (theader);
-    fits_table_mkheader_ImageLoneos (theader);
-
-    fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
-    theader[0].Naxis[1] = Nimage;
-    vtable[0].size = fits_matrix_size (theader);
-    return (TRUE);
-  }
-  if (format == DVO_FORMAT_PANSTARRS) {
-    ImagePanstarrs *tmpImage;
-
-    /* convert table rows from internal to external format */
-    for (i = 0; i < Nrow; i++) {
-      tmpImage = ImageInternalToPanstarrs ((Image *) vtable[0].buffer[i], 1);
-      fits_convert_ImagePanstarrs (tmpImage, sizeof(ImagePanstarrs), 1);
-      free (vtable[0].buffer[i]);
-      vtable[0].buffer[i] = (char *) tmpImage;
-    }
-
-    /* convert header from old format to new format */
-    fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
-    fits_free_header (theader);
-    fits_table_mkheader_ImagePanstarrs (theader);
-    fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
-    theader[0].Naxis[1] = Nimage;
-    vtable[0].size = fits_matrix_size (theader);
-    return (TRUE);
+  switch (format) {
+    case DVO_FORMAT_INTERNAL:
+      for (i = 0; i < Nrow; i++) {
+	fits_convert_Image ((Image *) vtable[0].buffer[i], sizeof(Image), 1);
+      }
+      return (TRUE);
+    case DVO_FORMAT_ELIXIR:
+      /* convert table rows from internal to external format */
+      for (i = 0; i < Nrow; i++) {
+	tmpImageElixir = ImageInternalToElixir ((Image *) vtable[0].buffer[i], 1);
+	fits_convert_ImageElixir (tmpImageElixir, sizeof(ImageElixir), 1);
+	free (vtable[0].buffer[i]);
+	vtable[0].buffer[i] = (char *) tmpImageElixir;
+      }
+
+      /* convert header from old format to new format */
+      fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
+
+      fits_free_header (theader);
+      fits_table_mkheader_ImageElixir (theader);
+
+      fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
+      theader[0].Naxis[1] = Nimage;
+      vtable[0].size = fits_matrix_size (theader);
+      return (TRUE);
+    case DVO_FORMAT_LONEOS:
+      /* convert table rows from internal to external format */
+      for (i = 0; i < Nrow; i++) {
+	tmpImageLoneos = ImageInternalToLoneos ((Image *) vtable[0].buffer[i], 1);
+	fits_convert_ImageLoneos (tmpImageLoneos, sizeof(ImageLoneos), 1);
+	free (vtable[0].buffer[i]);
+	vtable[0].buffer[i] = (char *) tmpImageLoneos;
+      }
+
+      /* convert header from old format to new format */
+      fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
+
+      fits_free_header (theader);
+      fits_table_mkheader_ImageLoneos (theader);
+
+      fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
+      theader[0].Naxis[1] = Nimage;
+      vtable[0].size = fits_matrix_size (theader);
+      return (TRUE);
+    case DVO_FORMAT_PANSTARRS:
+      /* convert table rows from internal to external format */
+      for (i = 0; i < Nrow; i++) {
+	tmpImagePanstarrs = ImageInternalToPanstarrs ((Image *) vtable[0].buffer[i], 1);
+	fits_convert_ImagePanstarrs (tmpImagePanstarrs, sizeof(ImagePanstarrs), 1);
+	free (vtable[0].buffer[i]);
+	vtable[0].buffer[i] = (char *) tmpImagePanstarrs;
+      }
+
+      /* convert header from old format to new format */
+      fits_scan (theader, "NAXIS2", "%d", 1, &Nimage);
+      fits_free_header (theader);
+      fits_table_mkheader_ImagePanstarrs (theader);
+      fits_modify (theader, "NAXIS2", "%d", 1, Nimage);
+      theader[0].Naxis[1] = Nimage;
+      vtable[0].size = fits_matrix_size (theader);
+      return (TRUE);
+    default:
+      break;
   }
   fprintf (stderr, "table format unknown (image vtable)\n");
Index: /trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 6683)
@@ -68,8 +68,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R_PS    = in[i].R;      
-    out[i].D_PS    = in[i].D;      
-    out[i].M_PS    = in[i].M  * 0.001;      
-    out[i].dM_PS   = in[i].dM * 0.001;      
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M  * 0.001;      
+    out[i].dM      = in[i].dM * 0.001;      
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
@@ -80,4 +80,14 @@
     out[i].missing = in[i].missing;
     out[i].Xg      = in[i].Xg;
+
+    /* these don't exist in Elixir */
+    out[i].dR      = 0;
+    out[i].dD      = 0;
+    out[i].uR      = 0;
+    out[i].uD      = 0;
+    out[i].duR     = 0;
+    out[i].duD     = 0;
+    out[i].P       = 0;
+    out[i].dP      = 0;
   }
   return (out);
@@ -93,8 +103,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R       = in[i].R_PS;      
-    out[i].D       = in[i].D_PS;      
-    out[i].M       = in[i].M_PS  * 1000.0;      
-    out[i].dM      = in[i].dM_PS * 1000.0;
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M  * 1000.0;      
+    out[i].dM      = in[i].dM * 1000.0;
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
Index: /trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 6683)
@@ -67,7 +67,7 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R_PS    = in[i].R;      
-    out[i].D_PS    = in[i].D;      
-    out[i].M_PS    = in[i].M * 0.001;      
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M * 0.001;      
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
@@ -79,5 +79,13 @@
 
     /* these don't exist in Loneos */
-    out[i].dM_PS   = 0xffff;
+    out[i].dR      = 0;
+    out[i].dD      = 0;
+    out[i].uR      = 0;
+    out[i].uD      = 0;
+    out[i].duR     = 0;
+    out[i].duD     = 0;
+    out[i].P       = 0;
+    out[i].dP      = 0;
+    out[i].dM      = 0xffff;
     out[i].Xg      = 0xffff;
   }
@@ -94,7 +102,7 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R       = in[i].R_PS;      
-    out[i].D       = in[i].D_PS;      
-    out[i].M       = in[i].M_PS * 1000.0;      
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M * 1000.0;      
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
Index: /trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs.c	(revision 6682)
+++ /trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs.c	(revision 6683)
@@ -70,8 +70,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R_PS    = in[i].R;      
-    out[i].D_PS    = in[i].D;      
-    out[i].M_PS    = in[i].M;      
-    out[i].dM_PS   = in[i].dM;
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M;      
+    out[i].dM      = in[i].dM;
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
@@ -82,4 +82,14 @@
     out[i].offset  = in[i].offset; 
     out[i].missing = in[i].missing;
+
+    /* these don't exist in Panstarrs */
+    out[i].dR      = 0;
+    out[i].dD      = 0;
+    out[i].uR      = 0;
+    out[i].uD      = 0;
+    out[i].duR     = 0;
+    out[i].duD     = 0;
+    out[i].P       = 0;
+    out[i].dP      = 0;
   }
   return (out);
@@ -95,8 +105,8 @@
 
   for (i = 0; i < Nvalues; i++) {
-    out[i].R       = in[i].R_PS;      
-    out[i].D       = in[i].D_PS;      
-    out[i].M       = in[i].M_PS;      
-    out[i].dM      = in[i].dM_PS;
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].M       = in[i].M;      
+    out[i].dM      = in[i].dM;
     out[i].Xp      = in[i].Xp;     
     out[i].Xm      = in[i].Xm;     
Index: /trunk/Ohana/src/libdvo/src/dvo_convert_pmtest.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/dvo_convert_pmtest.c	(revision 6683)
+++ /trunk/Ohana/src/libdvo/src/dvo_convert_pmtest.c	(revision 6683)
@@ -0,0 +1,72 @@
+# include <dvo.h>
+
+/* convert panstarrs-format averages to internal averages */
+Average *AveragePMtestToInternal (AveragePMtest *in, int Nvalues) {
+
+  int i;
+  Average *out;
+
+  ALLOCATE (out, Average, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].dR      = in[i].dR;      
+    out[i].dD      = in[i].dD;      
+
+    out[i].uR      = in[i].uR;      
+    out[i].uD      = in[i].uD;      
+    out[i].duR     = in[i].duR;      
+    out[i].duD     = in[i].duD;      
+    out[i].P       = in[i].P;      
+    out[i].dP      = in[i].dP;      
+
+    out[i].M       = in[i].M;      
+    out[i].dM      = in[i].dM;
+    out[i].Xp      = in[i].Xp;     
+    out[i].Xm      = in[i].Xm;     
+    out[i].Xg      = in[i].Xg;
+    out[i].Nm      = in[i].Nm;     
+    out[i].Nn      = in[i].Nn;     
+    out[i].code    = in[i].code;   
+    out[i].offset  = in[i].offset; 
+    out[i].missing = in[i].missing;
+  }
+  return (out);
+}
+
+/* convert internal averages to panstarrs-format averages */
+AveragePMtest *AverageInternalToPMtest (Average *in, int Nvalues) {
+
+  int i;
+  AveragePMtest *out;
+
+  ALLOCATE (out, AveragePMtest, Nvalues);
+
+  for (i = 0; i < Nvalues; i++) {
+    out[i].R       = in[i].R;      
+    out[i].D       = in[i].D;      
+    out[i].dR      = in[i].dR;      
+    out[i].dD      = in[i].dD;      
+
+    out[i].uR      = in[i].uR;      
+    out[i].uD      = in[i].uD;      
+    out[i].duR     = in[i].duR;      
+    out[i].duD     = in[i].duD;      
+    out[i].P       = in[i].P;      
+    out[i].dP      = in[i].dP;      
+
+    out[i].M       = in[i].M;      
+    out[i].dM      = in[i].dM;
+    out[i].Xp      = in[i].Xp;     
+    out[i].Xm      = in[i].Xm;     
+    out[i].Xg      = in[i].Xg;
+    out[i].Nm      = in[i].Nm;     
+    out[i].Nn      = in[i].Nn;     
+    out[i].code    = in[i].code;   
+    out[i].offset  = in[i].offset; 
+    out[i].missing = in[i].missing;
+  }
+  return (out);
+}
+
Index: /trunk/Ohana/src/libohana/src/time.c
===================================================================
--- /trunk/Ohana/src/libohana/src/time.c	(revision 6682)
+++ /trunk/Ohana/src/libohana/src/time.c	(revision 6683)
@@ -48,5 +48,5 @@
   value += tmp / 3600.0;
 
- escape:
+escape:
   if (neg) {
     value *= -1;
@@ -64,20 +64,20 @@
   *ra = *dec = 0;
   switch (dms_to_ddd (&Ra, str1)) {
-  case 0:
-    fprintf (stderr, "syntax error in RA\n");
-    return (FALSE);
-  case 1:
-    break;
-  case 2:
-    Ra = Ra * 15;
-    break;
+    case 0:
+      fprintf (stderr, "syntax error in RA\n");
+      return (FALSE);
+    case 1:
+      break;
+    case 2:
+      Ra = Ra * 15;
+      break;
   }
   switch (dms_to_ddd (&Dec, str2)) {
-  case 0:
-    fprintf (stderr, "syntax error in DEC\n");
-    return (FALSE);
-  case 1:
-  case 2:
-    break;
+    case 0:
+      fprintf (stderr, "syntax error in DEC\n");
+      return (FALSE);
+    case 1:
+    case 2:
+      break;
   }
   *ra = Ra;
@@ -151,29 +151,29 @@
     
   switch (chk_time (line)) {
-  case 0:
-    return (FALSE);
-  case TIME_DATE:
-    *second = date_to_sec (line);
-    return (TRUE);
-  case TIME_DAYS:
-    *second = strtod (line, 0) * 86400.0;
-    return (TRUE);
-  case TIME_HOURS:
-    *second = strtod (line, 0) * 3600.0;
-    return (TRUE);
-  case TIME_MINUTES:
-    *second = strtod (line, 0) * 60.0;
-    return (TRUE);
-  case TIME_SECONDS:
-    *second = strtod (line, 0);
-    return (TRUE);
-  case TIME_JD:
-    jd = strtod (line, 0);
-    *second = jd_to_sec (jd);
-    return (TRUE);
-  case TIME_MJD:
-    jd = strtod (line, 0);
-    *second = mjd_to_sec (jd);
-    return (TRUE);
+    case 0:
+      return (FALSE);
+    case TIME_DATE:
+      *second = date_to_sec (line);
+      return (TRUE);
+    case TIME_DAYS:
+      *second = strtod (line, 0) * 86400.0;
+      return (TRUE);
+    case TIME_HOURS:
+      *second = strtod (line, 0) * 3600.0;
+      return (TRUE);
+    case TIME_MINUTES:
+      *second = strtod (line, 0) * 60.0;
+      return (TRUE);
+    case TIME_SECONDS:
+      *second = strtod (line, 0);
+      return (TRUE);
+    case TIME_JD:
+      jd = strtod (line, 0);
+      *second = jd_to_sec (jd);
+      return (TRUE);
+    case TIME_MJD:
+      jd = strtod (line, 0);
+      *second = mjd_to_sec (jd);
+      return (TRUE);
   }
   return (FALSE);
@@ -185,21 +185,21 @@
   
   switch (chk_time (line)) {
-  case 0:
-  case TIME_JD:
-  case TIME_MJD:
-  case TIME_DATE:
-    return (FALSE);
-  case TIME_DAYS:
-    *second = strtod (line, 0) * 86400.0;
-    return (TRUE);
-  case TIME_HOURS:
-    *second = strtod (line, 0) * 3600.0;
-    return (TRUE);
-  case TIME_MINUTES:
-    *second = strtod (line, 0) * 60.0;
-    return (TRUE);
-  case TIME_SECONDS:
-    *second = strtod (line, 0);
-    return (TRUE);
+    case 0:
+    case TIME_JD:
+    case TIME_MJD:
+    case TIME_DATE:
+      return (FALSE);
+    case TIME_DAYS:
+      *second = strtod (line, 0) * 86400.0;
+      return (TRUE);
+    case TIME_HOURS:
+      *second = strtod (line, 0) * 3600.0;
+      return (TRUE);
+    case TIME_MINUTES:
+      *second = strtod (line, 0) * 60.0;
+      return (TRUE);
+    case TIME_SECONDS:
+      *second = strtod (line, 0);
+      return (TRUE);
   }
   return (FALSE);
@@ -312,5 +312,5 @@
   p1 = p2 + 1;
 
- escape:
+escape:
   jd = now.tm_mday - 32075 + (int)(1461*(1900 + now.tm_year + 4800 + (int)(((now.tm_mon+1)-14)/12))/4)
     + (int)(367*((now.tm_mon+1) - 2 - (int)(((now.tm_mon+1) - 14)/12)*12)/12)
Index: /trunk/Ohana/src/mosastro/src/gptolemy.c
===================================================================
--- /trunk/Ohana/src/mosastro/src/gptolemy.c	(revision 6682)
+++ /trunk/Ohana/src/mosastro/src/gptolemy.c	(revision 6683)
@@ -10,11 +10,11 @@
   catalog.filename = filename;
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 0:
-  case 2:
-    fprintf (stderr, "can't lock catalog data %s\n", filename);
-    *NSTARS = Nstars;
-    return (NULL);
-  case 1:
-    break;
+    case 0:
+    case 2:
+      fprintf (stderr, "can't lock catalog data %s\n", filename);
+      *NSTARS = Nstars;
+      return (NULL);
+    case 1:
+      break;
   }
 
@@ -32,6 +32,6 @@
   for (i = 0; i < catalog.Naverage; i++) {
     bzero (&stars[i], sizeof(StarData));
-    stars[i].R 	 = catalog.average[i].R_PS;
-    stars[i].D 	 = catalog.average[i].D_PS;
+    stars[i].R 	 = catalog.average[i].R;
+    stars[i].D 	 = catalog.average[i].D;
     stars[i].Mag = catalog.measure[catalog.average[i].offset].M_PS;
   }
Index: /trunk/Ohana/src/opihi/Makefile.Common
===================================================================
--- /trunk/Ohana/src/opihi/Makefile.Common	(revision 6682)
+++ /trunk/Ohana/src/opihi/Makefile.Common	(revision 6683)
@@ -27,4 +27,7 @@
 	@if [ ! -d $(DESTLIB) ]; then mkdir -p $(DESTLIB); fi
 	@echo ""
+	@echo "current: $^"
+	@echo "current: $*"
+	@echo "current: $@"
 	rm -f $@
 	cp $^ $@
Index: /trunk/Ohana/src/opihi/dvo/calextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/calextract.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/calextract.c	(revision 6683)
@@ -63,8 +63,8 @@
     catalog.filename = skylist[0].filename[Nr];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
@@ -99,6 +99,6 @@
       vec[Nm ][0].elements[N] = M2;
       vec[NC ][0].elements[N] = color;
-      vec[NR ][0].elements[N] = catalog.average[i].R_PS;
-      vec[ND ][0].elements[N] = catalog.average[i].D_PS;
+      vec[NR ][0].elements[N] = catalog.average[i].R;
+      vec[ND ][0].elements[N] = catalog.average[i].D;
       vec[Nd1][0].elements[N] = ExtractAverages (code[0], mode[0], &catalog.average[i], &catalog.secfilt[i*Nsec], &catalog.measure[m], AVE_dMAG);
       vec[Nd2][0].elements[N] = dM2;
@@ -133,5 +133,5 @@
   return (FALSE);
 
- escape:
+escape:
   
   if (RegionName != NULL) free (RegionName);
Index: /trunk/Ohana/src/opihi/dvo/calmextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/calmextract.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/calmextract.c	(revision 6683)
@@ -76,8 +76,8 @@
     catalog.filename = skylist[0].filename[Nr];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
@@ -134,6 +134,6 @@
 	vec[Nc ][0].elements[N] = color;
 	vec[Ns ][0].elements[N] = Nstar;
-	vec[NR ][0].elements[N] = catalog.average[i].R_PS;
-	vec[ND ][0].elements[N] = catalog.average[i].D_PS;
+	vec[NR ][0].elements[N] = catalog.average[i].R;
+	vec[ND ][0].elements[N] = catalog.average[i].D;
       }
       Nstar ++; 
@@ -160,5 +160,5 @@
   return (FALSE);
 
- escape:
+escape:
   
   FreeImageSelection ();
Index: /trunk/Ohana/src/opihi/dvo/compare.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/compare.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/compare.c	(revision 6683)
@@ -3,5 +3,5 @@
 
 void compare (Catalog *catlog1, Catalog *catlog2, 
-	 Vector *rvec,  Vector *dvec,  Vector *mvec, Vector *drvec, Vector *ddvec, Vector *dmvec, double radius) {
+	      Vector *rvec,  Vector *dvec,  Vector *mvec, Vector *drvec, Vector *ddvec, Vector *dmvec, double radius) {
 
   int i, j, first_j, Nmatch, NMATCH;
@@ -19,5 +19,5 @@
   for (i = j = 0; (i < catlog1[0].Naverage) && (j < catlog2[0].Naverage);) {
     
-    dX = catlog1[0].average[i].R_PS - catlog2[0].average[j].R_PS;
+    dX = catlog1[0].average[i].R - catlog2[0].average[j].R;
 
     if (!(i % 100))
@@ -32,14 +32,14 @@
       first_j = j;
       for (j = first_j; (fabs (dX) < radius) && (j < catlog2[0].Naverage); j++) {
-	dX = catlog1[0].average[i].R_PS - catlog2[0].average[j].R_PS;
-	dY = catlog1[0].average[i].D_PS - catlog2[0].average[j].D_PS;
+	dX = catlog1[0].average[i].R - catlog2[0].average[j].R;
+	dY = catlog1[0].average[i].D - catlog2[0].average[j].D;
 	dR = hypot (dX, dY);
 	if (dR < radius) {
-	   rvec[0].elements[Nmatch] = catlog1[0].average[i].R_PS;
-	   dvec[0].elements[Nmatch] = catlog1[0].average[i].D_PS;
-	   mvec[0].elements[Nmatch] = catlog1[0].average[i].M_PS;
+	  rvec[0].elements[Nmatch] = catlog1[0].average[i].R;
+	  dvec[0].elements[Nmatch] = catlog1[0].average[i].D;
+	  mvec[0].elements[Nmatch] = catlog1[0].average[i].M;
 	  drvec[0].elements[Nmatch] = dX;
 	  ddvec[0].elements[Nmatch] = dY;
-	  dmvec[0].elements[Nmatch] = catlog1[0].average[i].M_PS - catlog2[0].average[j].M_PS;
+	  dmvec[0].elements[Nmatch] = catlog1[0].average[i].M - catlog2[0].average[j].M;
 	  Nmatch ++;
 	  if (Nmatch == NMATCH - 1) {
@@ -66,7 +66,7 @@
   REALLOCATE (dmvec[0].elements, float, Nmatch);
   
-   rvec[0].Nelements = Nmatch;
-   dvec[0].Nelements = Nmatch;
-   mvec[0].Nelements = Nmatch;
+  rvec[0].Nelements = Nmatch;
+  dvec[0].Nelements = Nmatch;
+  mvec[0].Nelements = Nmatch;
   drvec[0].Nelements = Nmatch;
   ddvec[0].Nelements = Nmatch;
Index: /trunk/Ohana/src/opihi/dvo/dmt.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dmt.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/dmt.c	(revision 6683)
@@ -71,8 +71,8 @@
     catalog.filename = skylist[0].filename[k];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
@@ -86,5 +86,5 @@
       if (catalog.average[i].Nm != 3) continue;
       m = catalog.average[i].offset;
-      M0 = (Ns == -1) ? catalog.average[i].M_PS : catalog.secfilt[i*Nsec+Ns].M_PS;
+      M0 = (Ns == -1) ? catalog.average[i].M : catalog.secfilt[i*Nsec+Ns].M_PS;
       M1 = PhotCat (&catalog.measure[m+0]);
       M2 = PhotCat (&catalog.measure[m+1]);
@@ -98,6 +98,6 @@
       Yvec.elements[N] = (dmt1 + dmt2) / 2.0;
       if (SaveVectors) {
-	Rvec.elements[N] = catalog.average[i].R_PS;
-	Dvec.elements[N] = catalog.average[i].D_PS;
+	Rvec.elements[N] = catalog.average[i].R;
+	Dvec.elements[N] = catalog.average[i].D;
 	Zvec.elements[N] = M0;
       }
Index: /trunk/Ohana/src/opihi/dvo/dvomisc.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/dvomisc.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/dvomisc.c	(revision 6683)
@@ -15,6 +15,6 @@
   
   for (i = 0; i < Naverage; i++) {
-    A = average[i].R_PS;
-    D = average[i].D_PS;
+    A = average[i].R;
+    D = average[i].D;
     SD =  cos(RAD_DEG*A + zeta)*sin(theta)*cos(RAD_DEG*D) + cos(theta)*sin(RAD_DEG*D);
     CD = sqrt (1 - SD*SD);
@@ -28,6 +28,6 @@
       RA += 360;
     
-    average[i].R_PS = RA;
-    average[i].D_PS = DEC; 
+    average[i].R = RA;
+    average[i].D = DEC; 
   }
 
@@ -59,6 +59,6 @@
     j = (l << 1) + 1;
     while (j <= ir) {
-      if (j < ir && ave[j].R_PS < ave[j+1].R_PS) j++;
-      if (tmp.R_PS < ave[j].R_PS) {
+      if (j < ir && ave[j].R < ave[j+1].R) j++;
+      if (tmp.R < ave[j].R) {
 	ave[i] = ave[j];
 	j += (i=j) + 1;
Index: /trunk/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/gstar.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/gstar.c	(revision 6683)
@@ -72,8 +72,8 @@
   catalog.filename = skylist[0].filename[0];
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 2:
-    unlock_catalog (&catalog);
-  case 0:
-    return (FALSE);
+    case 2:
+      unlock_catalog (&catalog);
+    case 0:
+      return (FALSE);
   }
   catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
@@ -92,6 +92,6 @@
   /* stars are not guaranteed to be sorted in RA or in DEC, so first sort the list */
   for (i = 0; i < Nstars; i++) {
-    RA[i] = catalog.average[i].R_PS;
-    DEC[i] = catalog.average[i].D_PS;
+    RA[i] = catalog.average[i].R;
+    DEC[i] = catalog.average[i].D;
     N1[i] = i;
   }
@@ -138,30 +138,30 @@
       k = N1[i];
       if (!QUIET) {
-	  fprintf (GetOutfile(), "star: %d\n", k);
-	  fprintf (GetOutfile(), "%9.5f %9.5f %3d of %3d  %4.1f %5d\n", catalog.average[k].R_PS, catalog.average[k].D_PS, 
-		   catalog.average[k].Nm, catalog.average[k].Nn + catalog.average[k].Nm,
-		   0.01*catalog.average[k].Xp, catalog.average[k].code);
+	fprintf (GetOutfile(), "star: %d\n", k);
+	fprintf (GetOutfile(), "%9.5f %9.5f %3d of %3d  %4.1f %5d\n", catalog.average[k].R, catalog.average[k].D, 
+		 catalog.average[k].Nm, catalog.average[k].Nn + catalog.average[k].Nm,
+		 0.01*catalog.average[k].Xp, catalog.average[k].code);
       
-	  /* filter names -- primary code is 0 in this function */
-	  for (j = 0; j < Nsec + 1; j++) {
-	      code = GetPhotcodebyNsec (j);
-	      fprintf (GetOutfile (), "%s ", code[0].name);
-	  }
-	  fprintf (GetOutfile (), "\n");
-
-	  /* average mags */
-	  print_value (GetOutfile(), catalog.average[k].M_PS, catalog.average[k].M_PS);
-	  for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].M_PS, catalog.secfilt[j + Nsec*k].M_PS);
-	  fprintf (GetOutfile(), "\n");
-
-	  /* average mag errors */
-	  print_value (GetOutfile(), catalog.average[k].dM_PS, catalog.average[k].dM_PS);
-	  for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].dM_PS, catalog.secfilt[j + Nsec*k].dM_PS);
-	  fprintf (GetOutfile(), "\n");
-
-	  /* average mag chisq */
-	  print_value (GetOutfile(), pow (10.0, 0.01*catalog.average[k].Xm), catalog.average[k].Xm);
-	  for (j = 0; j < Nsec; j++) print_value (GetOutfile(), pow (10.0, 0.01*catalog.secfilt[j + Nsec*k].Xm), catalog.secfilt[j + Nsec*k].Xm);
-	  fprintf (GetOutfile(), "\n");
+	/* filter names -- primary code is 0 in this function */
+	for (j = 0; j < Nsec + 1; j++) {
+	  code = GetPhotcodebyNsec (j);
+	  fprintf (GetOutfile (), "%s ", code[0].name);
+	}
+	fprintf (GetOutfile (), "\n");
+
+	/* average mags */
+	print_value (GetOutfile(), catalog.average[k].M, catalog.average[k].M);
+	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].M_PS, catalog.secfilt[j + Nsec*k].M_PS);
+	fprintf (GetOutfile(), "\n");
+
+	/* average mag errors */
+	print_value (GetOutfile(), catalog.average[k].dM, catalog.average[k].dM);
+	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), catalog.secfilt[j + Nsec*k].dM_PS, catalog.secfilt[j + Nsec*k].dM_PS);
+	fprintf (GetOutfile(), "\n");
+
+	/* average mag chisq */
+	print_value (GetOutfile(), pow (10.0, 0.01*catalog.average[k].Xm), catalog.average[k].Xm);
+	for (j = 0; j < Nsec; j++) print_value (GetOutfile(), pow (10.0, 0.01*catalog.secfilt[j + Nsec*k].Xm), catalog.secfilt[j + Nsec*k].Xm);
+	fprintf (GetOutfile(), "\n");
       }
 
Index: /trunk/Ohana/src/opihi/dvo/imdata.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/imdata.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/imdata.c	(revision 6683)
@@ -122,8 +122,8 @@
     catalog.filename = skylist[0].filename[j];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES;
@@ -136,70 +136,70 @@
     /* assign vector values */
     switch (mode) {
-    case (1):  /* ra */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	n = catalog.measure[i].averef;
-	vec[0].elements[N] = catalog.average[n].R_PS - catalog.measure[i].dR_PS / 3600.0;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (2):  /* dec */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	n = catalog.measure[i].averef;
-	vec[0].elements[N] = catalog.average[n].D_PS - catalog.measure[i].dD_PS / 3600.0;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (3):  /* mag */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	vec[0].elements[N] = catalog.measure[i].M_PS;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (4):  /* dmag */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	vec[0].elements[N] = catalog.measure[i].dM_PS;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (5):  /* Mcal */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	vec[0].elements[N] = catalog.measure[i].Mcal_PS;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (6):  /* Mrel */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	n = catalog.measure[i].averef;
-	vec[0].elements[N] = catalog.average[n].M_PS;
-	N++;
-      }
-      break;
-    case (7):  /* source */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	vec[0].elements[N] = catalog.measure[i].source;
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
-    case (10):  /* time */
-      for (i = 0; i < catalog.Nmeasure; i++) {
-	if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
-	vec[0].elements[N] = TimeValue (catalog.measure[i].t, TimeReference, TimeFormat);
-	N++;
-	CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
-      }
-      break;
+      case (1):  /* ra */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  n = catalog.measure[i].averef;
+	  vec[0].elements[N] = catalog.average[n].R - catalog.measure[i].dR_PS / 3600.0;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (2):  /* dec */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  n = catalog.measure[i].averef;
+	  vec[0].elements[N] = catalog.average[n].D - catalog.measure[i].dD_PS / 3600.0;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (3):  /* mag */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  vec[0].elements[N] = catalog.measure[i].M_PS;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (4):  /* dmag */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  vec[0].elements[N] = catalog.measure[i].dM_PS;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (5):  /* Mcal */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  vec[0].elements[N] = catalog.measure[i].Mcal_PS;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (6):  /* Mrel */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  n = catalog.measure[i].averef;
+	  vec[0].elements[N] = catalog.average[n].M;
+	  N++;
+	}
+	break;
+      case (7):  /* source */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  vec[0].elements[N] = catalog.measure[i].source;
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
+      case (10):  /* time */
+	for (i = 0; i < catalog.Nmeasure; i++) {
+	  if ((catalog.measure[i].t < start) || (catalog.measure[i].t > stop)) continue;
+	  vec[0].elements[N] = TimeValue (catalog.measure[i].t, TimeReference, TimeFormat);
+	  N++;
+	  CHECK_REALLOCATE (vec[0].elements, float, NPTS, N, 1000);
+	}
+	break;
     }
     if (catalog.average != 0) {
Index: /trunk/Ohana/src/opihi/dvo/lcurve.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 6683)
@@ -83,8 +83,8 @@
   catalog.filename = skylist[0].filename[0];
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 2:
-    unlock_catalog (&catalog);
-  case 0:
-    return (FALSE);
+    case 2:
+      unlock_catalog (&catalog);
+    case 0:
+      return (FALSE);
   }
   catalog.catflags = LOAD_AVES | LOAD_MEAS;
@@ -103,6 +103,6 @@
   /* stars are not guaranteed to be sorted in RA or in DEC, so first sort the list */
   for (i = 0; i < Nstars; i++) {
-    RA[i] = catalog.average[i].R_PS;
-    DEC[i] = catalog.average[i].D_PS;
+    RA[i] = catalog.average[i].R;
+    DEC[i] = catalog.average[i].D;
     N1[i] = i;
   }
Index: /trunk/Ohana/src/opihi/dvo/lightcurve.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 6683)
@@ -59,8 +59,8 @@
   catalog.filename = skylist[0].filename[0];
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 2:
-    unlock_catalog (&catalog);
-  case 0:
-    return (FALSE);
+    case 2:
+      unlock_catalog (&catalog);
+    case 0:
+      return (FALSE);
   }
   catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
@@ -79,6 +79,6 @@
   /* stars are not guaranteed to be sorted in RA or in DEC, so first sort the list */
   for (i = 0; i < Nstars; i++) {
-    RA[i] = catalog.average[i].R_PS;
-    DEC[i] = catalog.average[i].D_PS;
+    RA[i] = catalog.average[i].R;
+    DEC[i] = catalog.average[i].D;
     N1[i] = i;
   }
Index: /trunk/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/mextract.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/mextract.c	(revision 6683)
@@ -58,8 +58,8 @@
     catalog.filename = skylist[0].filename[i];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_SECF;
Index: /trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/photometry.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/photometry.c	(revision 6683)
@@ -225,6 +225,18 @@
 
   param = AVE_ZERO;
-  if (!strcasecmp (parname, "ra"))    param = AVE_RA;
-  if (!strcasecmp (parname, "dec"))   param = AVE_DEC;
+  if (!strcasecmp (parname, "RA"))    param = AVE_RA;
+  if (!strcasecmp (parname, "DEC"))   param = AVE_DEC;
+
+  if (!strcasecmp (parname, "dRA"))   param = AVE_RA_ERR;
+  if (!strcasecmp (parname, "dDEC"))  param = AVE_DEC_ERR;
+
+  if (!strcasecmp (parname, "uRA"))   param = AVE_U_RA;
+  if (!strcasecmp (parname, "uDEC"))  param = AVE_U_DEC;
+  if (!strcasecmp (parname, "duRA"))  param = AVE_U_RA_ERR;
+  if (!strcasecmp (parname, "duDEC")) param = AVE_U_DEC_ERR;
+
+  if (!strcasecmp (parname, "par"))   param = AVE_PAR;
+  if (!strcasecmp (parname, "dpar"))  param = AVE_PAR_ERR;
+
   if (!strcasecmp (parname, "dmag"))  param = AVE_dMAG;
   if (!strcasecmp (parname, "mag"))   param = AVE_MAG;
@@ -564,9 +576,37 @@
   switch (param) {
     case AVE_RA:
-      value = average[0].R_PS;
+      value = average[0].R;
       break;
     case AVE_DEC:
-      value = average[0].D_PS;
-      break;
+      value = average[0].D;
+      break;
+    case AVE_RA_ERR:
+      value = average[0].dR;
+      break;
+    case AVE_DEC_ERR:
+      value = average[0].dD;
+      break;
+
+    case AVE_U_RA:
+      value = average[0].uR;
+      break;
+    case AVE_U_DEC:
+      value = average[0].uD;
+      break;
+    case AVE_U_RA_ERR:
+      value = average[0].duR;
+      break;
+    case AVE_U_DEC_ERR:
+      value = average[0].duD;
+      break;
+
+    case AVE_PAR:
+      value = average[0].P;
+      break;
+    case AVE_PAR_ERR:
+      value = average[0].dP;
+      break;
+
+
     case AVE_NMEAS:
       value = average[0].Nm;
@@ -924,5 +964,5 @@
   }
 
- skip: 
+skip: 
   if (M1 != NULL) free (M1);
   if (M2 != NULL) free (M2);
@@ -1058,8 +1098,8 @@
       break;
     case MEAS_RA: /* OK */
-      value = average[0].R_PS - measure[0].dR_PS / 3600.0;
+      value = average[0].R - measure[0].dR_PS / 3600.0;
       break;
     case MEAS_DEC: /* OK */
-      value = average[0].D_PS - measure[0].dD_PS / 3600.0;
+      value = average[0].D - measure[0].dD_PS / 3600.0;
       break;
     case MEAS_dMAG: /* OK */
@@ -1094,6 +1134,6 @@
       break;
     case MEAS_XCCD: /* OK */
-      ra  = average[0].R_PS - measure[0].dR_PS / 3600.0;
-      dec = average[0].D_PS - measure[0].dD_PS / 3600.0;
+      ra  = average[0].R - measure[0].dR_PS / 3600.0;
+      dec = average[0].D - measure[0].dD_PS / 3600.0;
       image = MatchImage (measure[0].t, measure[0].source);
       if (image == NULL) break;
@@ -1102,6 +1142,6 @@
       break;
     case MEAS_YCCD: /* OK */
-      ra  = average[0].R_PS - measure[0].dR_PS / 3600.0;
-      dec = average[0].D_PS - measure[0].dD_PS / 3600.0;
+      ra  = average[0].R - measure[0].dR_PS / 3600.0;
+      dec = average[0].D - measure[0].dD_PS / 3600.0;
       image = MatchImage (measure[0].t, measure[0].source);
       if (image == NULL) break;
@@ -1110,6 +1150,6 @@
       break;
     case MEAS_XMOSAIC: /* OK */
-      ra  = average[0].R_PS - measure[0].dR_PS / 3600.0;
-      dec = average[0].D_PS - measure[0].dD_PS / 3600.0;
+      ra  = average[0].R - measure[0].dR_PS / 3600.0;
+      dec = average[0].D - measure[0].dD_PS / 3600.0;
       mosaic = MatchMosaic (measure[0].t, measure[0].source);
       if (mosaic == NULL) break;
@@ -1118,6 +1158,6 @@
       break;
     case MEAS_YMOSAIC: /* OK */
-      ra  = average[0].R_PS - measure[0].dR_PS / 3600.0;
-      dec = average[0].D_PS - measure[0].dD_PS / 3600.0;
+      ra  = average[0].R - measure[0].dR_PS / 3600.0;
+      dec = average[0].D - measure[0].dD_PS / 3600.0;
       mosaic = MatchMosaic (measure[0].t, measure[0].source);
       if (mosaic == NULL) break;
Index: /trunk/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 6683)
@@ -83,8 +83,8 @@
     catalog.filename = skylist[0].filename[j];
     switch (lock_catalog (&catalog, LCK_SOFT)) {
-    case 2:
-      unlock_catalog (&catalog);
-    case 0:
-      continue;
+      case 2:
+	unlock_catalog (&catalog);
+      case 0:
+	continue;
     }
     catalog.catflags = LOAD_AVES | LOAD_MEAS;
@@ -107,6 +107,6 @@
     for (N = i = 0; i < catalog.Naverage; i++) {
       if (IDclip && (catalog.average[i].code != IDchoice)) continue;
-      while (catalog.average[i].R_PS < Rmin) catalog.average[i].R_PS += 360.0;
-      while (catalog.average[i].R_PS > Rmax) catalog.average[i].R_PS -= 360.0;
+      while (catalog.average[i].R < Rmin) catalog.average[i].R += 360.0;
+      while (catalog.average[i].R > Rmax) catalog.average[i].R -= 360.0;
       m = catalog.average[i].offset;
       for (k = 0; k < catalog.average[i].Nm; k++) {
@@ -120,5 +120,5 @@
 	if (LimExclude && (Zvec.elements[N] > 0.99)) continue;
 	if (Zvec.elements[N] < 0.011) continue;
-	fRD_to_XY (&Xvec.elements[N], &Yvec.elements[N], catalog.average[i].R_PS - catalog.measure[m+k].dR_PS/3600.0, catalog.average[i].D_PS - catalog.measure[m+k].dD_PS/3600.0, &graphmode.coords);
+	fRD_to_XY (&Xvec.elements[N], &Yvec.elements[N], catalog.average[i].R - catalog.measure[m+k].dR_PS/3600.0, catalog.average[i].D - catalog.measure[m+k].dD_PS/3600.0, &graphmode.coords);
 	N ++;
       }
Index: /trunk/Ohana/src/opihi/dvo/subpix.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/subpix.c	(revision 6682)
+++ /trunk/Ohana/src/opihi/dvo/subpix.c	(revision 6683)
@@ -43,8 +43,8 @@
   catalog.filename = skylist[0].filename[0];
   switch (lock_catalog (&catalog, LCK_SOFT)) {
-  case 2:
-    unlock_catalog (&catalog);
-  case 0:
-    return (FALSE);
+    case 2:
+      unlock_catalog (&catalog);
+    case 0:
+      return (FALSE);
   }
   catalog.catflags = LOAD_AVES | LOAD_MEAS;
@@ -61,6 +61,6 @@
   ALLOCATE (index, int, Nstars);
   for (i = 0; i < Nstars; i++) {
-    RA[i] = catalog.average[i].R_PS;
-    DEC[i] = catalog.average[i].D_PS;
+    RA[i] = catalog.average[i].R;
+    DEC[i] = catalog.average[i].D;
     index[i] = i;
   }
Index: /trunk/Ohana/src/opihi/include/dvo1.h
===================================================================
--- /trunk/Ohana/src/opihi/include/dvo1.h	(revision 6682)
+++ /trunk/Ohana/src/opihi/include/dvo1.h	(revision 6683)
@@ -15,6 +15,8 @@
 
 /* average params */
-enum {AVE_ZERO, AVE_RA, AVE_DEC, AVE_MAG, AVE_REF, AVE_dMAG, AVE_Xm, AVE_Xp, AVE_NMEAS, 
-      AVE_NMISS, AVE_TYPE, AVE_NPHOT, AVE_NCODE, AVE_NCRIT, AVE_FLAG, AVE_TYPEFRAC};
+enum {AVE_ZERO, AVE_RA, AVE_DEC, AVE_RA_ERR, AVE_DEC_ERR, AVE_U_RA, AVE_U_DEC, 
+      AVE_U_RA_ERR, AVE_U_DEC_ERR, AVE_PAR, AVE_PAR_ERR, AVE_MAG, AVE_REF, AVE_dMAG, 
+      AVE_Xm, AVE_Xp, AVE_NMEAS, AVE_NMISS, AVE_TYPE, AVE_NPHOT, AVE_NCODE, AVE_NCRIT, 
+      AVE_FLAG, AVE_TYPEFRAC};
 
 typedef struct {
Index: /trunk/Ohana/src/relphot/src/ImageOps.c
===================================================================
--- /trunk/Ohana/src/relphot/src/ImageOps.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/ImageOps.c	(revision 6683)
@@ -111,6 +111,6 @@
       /* add this measurement to the grid cell for this chip */
       ave = measure[0].averef;
-      ra  = catalog[cat].average[ave].R_PS - measure[0].dR_PS / 3600.0;
-      dec = catalog[cat].average[ave].D_PS - measure[0].dD_PS / 3600.0;
+      ra  = catalog[cat].average[ave].R - measure[0].dR_PS / 3600.0;
+      dec = catalog[cat].average[ave].D - measure[0].dD_PS / 3600.0;
        
       /* X,Y always positive-definite in range 0,0 - dX, dY */
Index: /trunk/Ohana/src/relphot/src/MosaicOps.c
===================================================================
--- /trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 6683)
@@ -591,6 +591,6 @@
 
       ave = catalog[c].measure[m].averef;
-      xlist[N] = catalog[c].average[ave].R_PS - catalog[c].measure[m].dR_PS / 3600.0;
-      ylist[N] = catalog[c].average[ave].D_PS - catalog[c].measure[m].dD_PS / 3600.0;
+      xlist[N] = catalog[c].average[ave].R - catalog[c].measure[m].dR_PS / 3600.0;
+      ylist[N] = catalog[c].average[ave].D - catalog[c].measure[m].dD_PS / 3600.0;
       N++;
     }
Index: /trunk/Ohana/src/relphot/src/StarOps.c
===================================================================
--- /trunk/Ohana/src/relphot/src/StarOps.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/StarOps.c	(revision 6683)
@@ -28,5 +28,5 @@
   if (catalog[cat].average[ave].code & STAR_BAD) return (NO_MAG);  
  
-  value = PhotPrimary ? catalog[cat].average[ave].M_PS : catalog[cat].secfilt[PhotNsec*ave+PhotSec].M_PS;
+  value = PhotPrimary ? catalog[cat].average[ave].M : catalog[cat].secfilt[PhotNsec*ave+PhotSec].M_PS;
   return (value);
 }
@@ -66,6 +66,6 @@
 
       if (PhotPrimary) {
-	catalog[i].average[j].M_PS = stats.mean;
-	catalog[i].average[j].dM_PS = stats.sigma;
+	catalog[i].average[j].M = stats.mean;
+	catalog[i].average[j].dM = stats.sigma;
 	catalog[i].average[j].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NO_MAG;
       } else {
@@ -122,6 +122,6 @@
       /* use sigma or error in dM for output? */
       if (PhotPrimary) {
-	catalog[i].average[j].M_PS = stats.mean;
-	catalog[i].average[j].dM_PS = MAX (stats.sigma, stats.error);
+	catalog[i].average[j].M = stats.mean;
+	catalog[i].average[j].dM = MAX (stats.sigma, stats.error);
 	catalog[i].average[j].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NO_MAG;
       } else {
@@ -187,5 +187,5 @@
       Chisq = pow (10.0, 0.01*Xm);
       xlist[Ntot] = Chisq;
-      slist[Ntot] = PhotPrimary ? catalog[i].average[j].dM_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
+      slist[Ntot] = PhotPrimary ? catalog[i].average[j].dM : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
       dlist[Ntot] = 1;
       Ntot ++;
@@ -203,5 +203,5 @@
   for (i = 0; i < Ncatalog; i++) {
     for (j = 0; j < catalog[i].Naverage; j++) {
-      dM = PhotPrimary ? catalog[i].average[j].dM_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
+      dM = PhotPrimary ? catalog[i].average[j].dM : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
       Xm = PhotPrimary ? catalog[i].average[j].Xm    : catalog[i].secfilt[PhotNsec*j+PhotSec].Xm;
       Chisq = pow (10.0, 0.01*Xm);
@@ -423,5 +423,5 @@
       if (catalog[i].average[j].code & STAR_BAD) continue;  
 
-      dM = PhotPrimary ? catalog[i].average[j].dM_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
+      dM = PhotPrimary ? catalog[i].average[j].dM : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
       list[n] = dM;
       dlist[n] = 1;
@@ -452,5 +452,5 @@
     for (j = 0; j < catalog[i].Naverage; j++) {
       if (catalog[i].average[j].code & STAR_BAD) continue;  
-      dMrel = PhotPrimary ? catalog[i].average[j].dM_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
+      dMrel = PhotPrimary ? catalog[i].average[j].dM : catalog[i].secfilt[PhotNsec*j+PhotSec].dM_PS;
       bin = dMrel / 0.00025;
       bin = MAX (0, MIN (NBIN-1, bin));
@@ -483,5 +483,5 @@
     for (j = 0; j < catalog[i].Naverage; j++) {
       if (catalog[i].average[j].code & STAR_BAD) continue;
-      xlist[N] = PhotPrimary ? catalog[i].average[j].M_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].M_PS;
+      xlist[N] = PhotPrimary ? catalog[i].average[j].M : catalog[i].secfilt[PhotNsec*j+PhotSec].M_PS;
       value    = PhotPrimary ? catalog[i].average[j].Xm   : catalog[i].secfilt[PhotNsec*j+PhotSec].Xm;
       if (value == NO_MAG) continue;
@@ -517,6 +517,6 @@
   for (i = 0; i < Ncatalog; i++) {
     for (j = 0; j < catalog[i].Naverage; j++) {
-      xlist[N] = catalog[i].average[j].R_PS;
-      ylist[N] = catalog[i].average[j].D_PS;
+      xlist[N] = catalog[i].average[j].R;
+      ylist[N] = catalog[i].average[j].D;
       N++;
     }
Index: /trunk/Ohana/src/relphot/src/bcatalog.c
===================================================================
--- /trunk/Ohana/src/relphot/src/bcatalog.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/bcatalog.c	(revision 6683)
@@ -18,8 +18,8 @@
   for (i = 0; i < catalog[0].Naverage; i++) {
     if (catalog[0].average[i].Nm < 2) continue; 
-    if (catalog[0].average[i].R_PS < fullregion[0].RA[0]) continue;
-    if (catalog[0].average[i].R_PS > fullregion[0].RA[1]) continue;
-    if (catalog[0].average[i].D_PS < fullregion[0].DEC[0]) continue;
-    if (catalog[0].average[i].D_PS > fullregion[0].DEC[1]) continue;
+    if (catalog[0].average[i].R < fullregion[0].RA[0]) continue;
+    if (catalog[0].average[i].R > fullregion[0].RA[1]) continue;
+    if (catalog[0].average[i].D < fullregion[0].DEC[0]) continue;
+    if (catalog[0].average[i].D > fullregion[0].DEC[1]) continue;
 
     /* start with all stars good */
@@ -32,7 +32,7 @@
     if (RESET) {
       float *p;
-      p = (PhotPrimary) ? &subcatalog[0].average[Naverage].M_PS : &subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].M_PS;
+      p = (PhotPrimary) ? &subcatalog[0].average[Naverage].M : &subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].M_PS;
       *p = NO_MAG;
-      p = (PhotPrimary) ? &subcatalog[0].average[Naverage].dM_PS : &subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].dM_PS;
+      p = (PhotPrimary) ? &subcatalog[0].average[Naverage].dM : &subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].dM_PS;
       *p = NO_MAG;
       subcatalog[0].average[Naverage].code &= ~ID_STAR_FEW;
Index: /trunk/Ohana/src/relphot/src/plot_scatter.c
===================================================================
--- /trunk/Ohana/src/relphot/src/plot_scatter.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/plot_scatter.c	(revision 6683)
@@ -32,5 +32,5 @@
 	if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
 
-	Mrel = PhotPrimary ? catalog[i].average[j].M_PS : catalog[i].secfilt[PhotNsec*j+PhotSec].M_PS;
+	Mrel = PhotPrimary ? catalog[i].average[j].M : catalog[i].secfilt[PhotNsec*j+PhotSec].M_PS;
 	xlist[N] = Mrel;
 	ylist[N] = PhotSys  (&catalog[i].measure[m], &catalog[i].average[j], &catalog[i].secfilt[j*PhotNsec]) - Mcal - Mmos - Mgrid - Mrel;
Index: /trunk/Ohana/src/relphot/src/setExclusions.c
===================================================================
--- /trunk/Ohana/src/relphot/src/setExclusions.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/setExclusions.c	(revision 6683)
@@ -25,6 +25,6 @@
 	/* select measurements by mag limit */
 	if (AreaSelect) {
-	  r = catalog[i].average[j].R_PS + catalog[i].measure[m].dR_PS / 3600.0;
-	  d = catalog[i].average[j].D_PS + catalog[i].measure[m].dD_PS / 3600.0;
+	  r = catalog[i].average[j].R + catalog[i].measure[m].dR_PS / 3600.0;
+	  d = catalog[i].average[j].D + catalog[i].measure[m].dD_PS / 3600.0;
 	  if ((coords = getCoords (m, i)) == NULL) goto markbad;
 	  RD_to_XY (&x, &y, r, d, coords);
Index: /trunk/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- /trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 6682)
+++ /trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 6683)
@@ -11,7 +11,7 @@
 
     for (i = 0; i < catalog[0].Naverage; i++) {
-      p = (PhotPrimary) ? &catalog[0].average[i].M_PS  : &catalog[0].secfilt[PhotNsec*i+PhotSec].M_PS;
+      p = (PhotPrimary) ? &catalog[0].average[i].M  : &catalog[0].secfilt[PhotNsec*i+PhotSec].M_PS;
       *p = NO_MAG;
-      p = (PhotPrimary) ? &catalog[0].average[i].dM_PS : &catalog[0].secfilt[PhotNsec*i+PhotSec].dM_PS;
+      p = (PhotPrimary) ? &catalog[0].average[i].dM : &catalog[0].secfilt[PhotNsec*i+PhotSec].dM_PS;
       *p = NO_MAG;
       q = (PhotPrimary) ? &catalog[0].average[i].Xm : &catalog[0].secfilt[PhotNsec*i+PhotSec].Xm;
@@ -143,12 +143,12 @@
 /* dophot types:
 
-   1 - star
-   2 - galaxy
-   3 - star
-   4 - weak
-   5 - edge
-   7 - weak
-   9 - weak
-   10 - sat
+1 - star
+2 - galaxy
+3 - star
+4 - weak
+5 - edge
+7 - weak
+9 - weak
+10 - sat
 */
 
Index: /trunk/Ohana/src/uniphot/src/update_catalog.c
===================================================================
--- /trunk/Ohana/src/uniphot/src/update_catalog.c	(revision 6682)
+++ /trunk/Ohana/src/uniphot/src/update_catalog.c	(revision 6683)
@@ -15,5 +15,5 @@
   for (i = 0; i < catalog[0].Naverage; i++) {
     
-    Mp = Primary ? &catalog[0].average[i].M_PS : &catalog[0].secfilt[i*Nsecfilt+Nsec].M_PS;
+    Mp = Primary ? &catalog[0].average[i].M : &catalog[0].secfilt[i*Nsecfilt+Nsec].M_PS;
     if (*Mp != NO_MAG) *Mp += sgroup[0].M;
 
