Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 36630)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 36833)
@@ -171,4 +171,5 @@
   ID_STAR_USE_PAR   = 0x00200000, // parallax used (not AVE or PM)
   ID_STAR_NO_ASTROM = 0x00400000, // mean astrometry could not be measured
+  ID_STAR_BAD_PM    = 0x00800000, // mean astrometry could not be measured
   ID_OBJ_EXT        = 0x01000000, // extended in our data (eg, PS)
   ID_OBJ_EXT_ALT    = 0x02000000, // extended in external data (eg, 2MASS)
@@ -481,5 +482,5 @@
   uint32_t         measureOffset;        // offset to first psf measurement
   uint32_t         missingOffset;        // offset to first missing obs
-  uint32_t         extendOffset;         // offset to first extended measurement
+  float            refColor;            // offset to first extended measurement
   uint32_t         flags;                // average object flags (star; ghost; etc)
   uint32_t         photFlagsUpper;       // upper bit of 2 bit summary of per-measure photflags
Index: trunk/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvodb.h	(revision 36630)
+++ trunk/Ohana/src/libdvo/include/dvodb.h	(revision 36833)
@@ -222,4 +222,5 @@
       AVE_EXTID_HI,
       AVE_EXTID_LO,
+      AVE_REF_COLOR,
 };
 
@@ -289,5 +290,6 @@
       IMAGE_NFIT_ASTROM,
       IMAGE_NLINK_PHOTOM,
-      IMAGE_NLINK_ASTROM
+      IMAGE_NLINK_ASTROM,
+      IMAGE_REF_COLOR
 };
 
Index: trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 36833)
@@ -161,4 +161,7 @@
     case AVE_STARGAL:
       value.Flt = average[0].stargal;
+      break;
+    case AVE_REF_COLOR:
+      value.Flt = average[0].refColor;
       break;
 
Index: trunk/Ohana/src/libdvo/src/dbExtractImages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractImages.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dbExtractImages.c	(revision 36833)
@@ -69,6 +69,11 @@
       if (!haveCelestial) {
 	if (!FindMosaicForImage (image, Nimage, N)) return value;
-	x = 0.5*image[N].NX;
-	y = 0.5*image[N].NY;
+	if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	  x = 0.0;
+	  y = 0.0;
+	} else {
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	}
 	XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	haveCelestial = TRUE;
@@ -79,6 +84,11 @@
       if (!haveCelestial) {
 	if (!FindMosaicForImage (image, Nimage, N)) return value;
-	x = 0.5*image[N].NX;
-	y = 0.5*image[N].NY;
+	if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	  x = 0.0;
+	  y = 0.0;
+	} else {
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	}
 	XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	haveCelestial = TRUE;
@@ -90,6 +100,11 @@
 	if (!haveCelestial) {
 	  if (!FindMosaicForImage (image, Nimage, N)) return value;
-	  x = 0.5*image[N].NX;
-	  y = 0.5*image[N].NY;
+	  if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	    x = 0.0;
+	    y = 0.0;
+	  } else {
+	    x = 0.5*image[N].NX;
+	    y = 0.5*image[N].NY;
+	  }
 	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	  haveCelestial = TRUE;
@@ -104,6 +119,11 @@
 	if (!haveCelestial) {
 	  if (!FindMosaicForImage (image, Nimage, N)) return value;
-	  x = 0.5*image[N].NX;
-	  y = 0.5*image[N].NY;
+	  if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	    x = 0.0;
+	    y = 0.0;
+	  } else {
+	    x = 0.5*image[N].NX;
+	    y = 0.5*image[N].NY;
+	  }
 	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	  haveCelestial = TRUE;
@@ -118,6 +138,11 @@
 	if (!haveCelestial) {
 	  if (!FindMosaicForImage (image, Nimage, N)) return value;
-	  x = 0.5*image[N].NX;
-	  y = 0.5*image[N].NY;
+	  if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	    x = 0.0;
+	    y = 0.0;
+	  } else {
+	    x = 0.5*image[N].NX;
+	    y = 0.5*image[N].NY;
+	  }
 	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	  haveCelestial = TRUE;
@@ -132,6 +157,11 @@
 	if (!haveCelestial) {
 	  if (!FindMosaicForImage (image, Nimage, N)) return value;
-	  x = 0.5*image[N].NX;
-	  y = 0.5*image[N].NY;
+	  if (!strcmp(&image[N].coords.ctype[4], "-DIS")) {
+	    x = 0.0;
+	    y = 0.0;
+	  } else {
+	    x = 0.5*image[N].NX;
+	    y = 0.5*image[N].NY;
+	  }
 	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
 	  haveCelestial = TRUE;
@@ -344,4 +374,8 @@
       value.Int = image[N].nLinkAstrom;
       break;
+
+    case IMAGE_REF_COLOR:
+      value.Flt = image[N].refColor;
+      break;
   }
   return (value);
Index: trunk/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbFields.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dbFields.c	(revision 36833)
@@ -381,4 +381,5 @@
   if (!strcasecmp (fieldName, "EXTID_HI"))    ESCAPE (AVE_EXTID_HI,    MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "EXTID_LO"))    ESCAPE (AVE_EXTID_LO,    MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "REF_COLOR"))   ESCAPE (AVE_REF_COLOR,   MAG_NONE, OPIHI_FLT);
 
   // check for code:mode in photcode name 
@@ -522,8 +523,9 @@
   if (!strcasecmp (fieldName, "UCDIST")) ESCAPE (IMAGE_UBERCAL_DIST,MAG_NONE, OPIHI_INT);
 
-  if (!strcasecmp (fieldName, "NFIT_PHOTOM")) ESCAPE (IMAGE_NFIT_PHOTOM,MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "NFIT_ASTROM")) ESCAPE (IMAGE_NFIT_ASTROM,MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "NLINK_PHOTOM")) ESCAPE (IMAGE_NLINK_PHOTOM,MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "NLINK_ASTROM")) ESCAPE (IMAGE_NLINK_ASTROM,MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NFIT_PHOTOM"))  ESCAPE (IMAGE_NFIT_PHOTOM,  MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NFIT_ASTROM"))  ESCAPE (IMAGE_NFIT_ASTROM,  MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NLINK_PHOTOM")) ESCAPE (IMAGE_NLINK_PHOTOM, MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NLINK_ASTROM")) ESCAPE (IMAGE_NLINK_ASTROM, MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "REF_COLOR"))    ESCAPE (IMAGE_REF_COLOR,    MAG_NONE, OPIHI_FLT);
 
   // for words that don't parse, try a photcode
Index: trunk/Ohana/src/libdvo/src/dvo_catalog.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_catalog.c	(revision 36833)
@@ -100,5 +100,5 @@
   average->measureOffset   = -1;
   average->missingOffset   = -1;
-  average->extendOffset    = -1;
+  average->refColor        = NAN;
 
   average->flags           = 0;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 36833)
@@ -119,5 +119,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].objID 	 = in[i].objID;
     out[i].catID 	 = in[i].catID;
@@ -153,5 +153,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].objID 	 = in[i].objID;
     out[i].catID 	 = in[i].catID;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 36833)
@@ -140,5 +140,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].objID 	 = in[i].objID;
@@ -175,5 +175,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].objID 	 = in[i].objID;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 36833)
@@ -145,5 +145,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].objID 	 = in[i].objID;
@@ -184,5 +184,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].objID 	 = in[i].objID;
@@ -269,4 +269,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
@@ -331,4 +332,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 36833)
@@ -145,5 +145,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].photFlagsUpper = in[i].photFlagsUpper;   
@@ -186,5 +186,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor  = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].photFlagsUpper = in[i].photFlagsUpper;   
@@ -279,4 +279,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
@@ -341,4 +342,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
Index: trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 36833)
@@ -166,5 +166,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor      = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].photFlagsUpper = in[i].photFlagsUpper;   
@@ -210,5 +210,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor      = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].photFlagsUpper = in[i].photFlagsUpper;   
@@ -317,4 +317,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
@@ -379,4 +380,5 @@
     out[i].DECo  	    = in[i].DECo;
     out[i].Radius  	    = in[i].Radius;
+    out[i].refColor  	    = in[i].refColor;
 
     out[i].detection_limit  = in[i].detection_limit;
@@ -680,5 +682,5 @@
     out[i].measureOffset = in[i].measureOffset; 
     out[i].missingOffset = in[i].missingOffset;
-    out[i].extendOffset  = in[i].extendOffset;
+    out[i].refColor      = in[i].refColor;
     out[i].flags     	 = in[i].flags;   
     out[i].photFlagsUpper = in[i].photFlagsUpper;   
Index: trunk/Ohana/src/libdvo/src/skyregion_io.c
===================================================================
--- trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 36630)
+++ trunk/Ohana/src/libdvo/src/skyregion_io.c	(revision 36833)
@@ -78,4 +78,5 @@
   gfits_free_matrix (&matrix);
   gfits_free_header (&theader);
+  fclose (f);
 
   return (skytable);
