Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/include/ukirt_uhs.h
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/include/ukirt_uhs.h	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/include/ukirt_uhs.h	(revision 42018)
@@ -64,2 +64,4 @@
 char *iparse_csv_rpt (int *X,    int Nwant, int Nlast, char *line, int *status);
 char *jparse_csv_rpt (uint64_t *X, int Nwant, int Nlast, char *line, int *status);
+
+float psfQFfromXClass (int xClass);
Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars.c	(revision 42018)
@@ -45,2 +45,17 @@
 }
 
+float psfQFfromXClass (int xClass) {
+
+  float value = NAN;
+  switch (xClass) {
+    case -1: value = 0.99; break; // star
+    case -2: value = 0.90; break; // probable star
+    case -3: value = 0.40; break; // probable galaxy
+    case +1: value = 0.20; break; // galaxy
+    case  0: value = 0.10; break; // noise
+    default: break;
+  }
+
+  return value;
+}
+
Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c	(revision 42018)
@@ -605,6 +605,6 @@
     stars[Nstars].measure[0].Mkron      = yAperMag4[i];
     stars[Nstars].measure[0].dMkron     = yAperMag4Err[i];
-    stars[Nstars].measure[0].posangle   = yPA[i]; // XXX units
-    stars[Nstars].measure[0].psfQF      = yClass[i];
+    stars[Nstars].measure[0].posangle   = ToShortDegrees(yPA[i]); // XXX units
+    stars[Nstars].measure[0].psfQF      = psfQFfromXClass(yClass[i]);
     stars[Nstars].measure[0].photFlags  = yppErrBits[i];
     stars[Nstars].measure[0].photFlags2 = photFlags2;
@@ -625,6 +625,6 @@
     stars[Nstars].measure[1].Mkron      = zAperMag4[i];
     stars[Nstars].measure[1].dMkron     = zAperMag4Err[i];
-    stars[Nstars].measure[1].posangle   = zPA[i]; // XXX units
-    stars[Nstars].measure[1].psfQF      = zClass[i];
+    stars[Nstars].measure[1].posangle   = ToShortDegrees(zPA[i]); // XXX units
+    stars[Nstars].measure[1].psfQF      = psfQFfromXClass(zClass[i]);
     stars[Nstars].measure[1].photFlags  = zppErrBits[i];
     stars[Nstars].measure[1].photFlags2 = photFlags2;
@@ -645,6 +645,6 @@
     stars[Nstars].measure[2].Mkron      = jAperMag4[i];
     stars[Nstars].measure[2].dMkron     = jAperMag4Err[i];
-    stars[Nstars].measure[2].posangle   = jPA[i]; // XXX units
-    stars[Nstars].measure[2].psfQF      = jClass[i];
+    stars[Nstars].measure[2].posangle   = ToShortDegrees(jPA[i]); // XXX units
+    stars[Nstars].measure[2].psfQF      = psfQFfromXClass(jClass[i]);
     stars[Nstars].measure[2].photFlags  = jppErrBits[i];
     stars[Nstars].measure[2].photFlags2 = photFlags2;
@@ -665,6 +665,6 @@
     stars[Nstars].measure[3].Mkron      = hAperMag4[i];
     stars[Nstars].measure[3].dMkron     = hAperMag4Err[i];
-    stars[Nstars].measure[3].posangle   = hPA[i]; // XXX units
-    stars[Nstars].measure[3].psfQF      = hClass[i];
+    stars[Nstars].measure[3].posangle   = ToShortDegrees(hPA[i]); // XXX units
+    stars[Nstars].measure[3].psfQF      = psfQFfromXClass(hClass[i]);
     stars[Nstars].measure[3].photFlags  = hppErrBits[i];
     stars[Nstars].measure[3].photFlags2 = photFlags2;
@@ -685,6 +685,6 @@
     stars[Nstars].measure[4].Mkron      = k1AperMag4[i];
     stars[Nstars].measure[4].dMkron     = k1AperMag4Err[i];
-    stars[Nstars].measure[4].posangle   = k1PA[i]; // XXX units
-    stars[Nstars].measure[4].psfQF      = k1Class[i];
+    stars[Nstars].measure[4].posangle   = ToShortDegrees(k1PA[i]); // XXX units
+    stars[Nstars].measure[4].psfQF      = psfQFfromXClass(k1Class[i]);
     stars[Nstars].measure[4].photFlags  = k1ppErrBits[i];
     stars[Nstars].measure[4].photFlags2 = photFlags2;
@@ -705,6 +705,6 @@
     stars[Nstars].measure[5].Mkron      = k2AperMag4[i];
     stars[Nstars].measure[5].dMkron     = k2AperMag4Err[i];
-    stars[Nstars].measure[5].posangle   = k2PA[i]; // XXX units
-    stars[Nstars].measure[5].psfQF      = k2Class[i];
+    stars[Nstars].measure[5].posangle   = ToShortDegrees(k2PA[i]); // XXX units
+    stars[Nstars].measure[5].psfQF      = psfQFfromXClass(k2Class[i]);
     stars[Nstars].measure[5].photFlags  = k2ppErrBits[i];
     stars[Nstars].measure[5].photFlags2 = photFlags2;
Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c	(revision 42018)
@@ -516,6 +516,6 @@
     stars[Nstars].measure[0].Mkron      = jAperMag4[i];
     stars[Nstars].measure[0].dMkron     = jAperMag4Err[i];
-    stars[Nstars].measure[0].posangle   = jPA[i]; // XXX units
-    stars[Nstars].measure[0].psfQF      = jClass[i];
+    stars[Nstars].measure[0].posangle   = ToShortDegrees(jPA[i]); // XXX units
+    stars[Nstars].measure[0].psfQF      = psfQFfromXClass(jClass[i]);
     stars[Nstars].measure[0].photFlags  = jppErrBits[i];
     stars[Nstars].measure[0].photFlags2 = photFlags2;
@@ -536,6 +536,6 @@
     stars[Nstars].measure[1].Mkron      = hAperMag4[i];
     stars[Nstars].measure[1].dMkron     = hAperMag4Err[i];
-    stars[Nstars].measure[1].posangle   = hPA[i]; // XXX units
-    stars[Nstars].measure[1].psfQF      = hClass[i];
+    stars[Nstars].measure[1].posangle   = ToShortDegrees(hPA[i]); // XXX units
+    stars[Nstars].measure[1].psfQF      = psfQFfromXClass(hClass[i]);
     stars[Nstars].measure[1].photFlags  = hppErrBits[i];
     stars[Nstars].measure[1].photFlags2 = photFlags2;
@@ -556,6 +556,6 @@
     stars[Nstars].measure[2].Mkron      = k1AperMag4[i];
     stars[Nstars].measure[2].dMkron     = k1AperMag4Err[i];
-    stars[Nstars].measure[2].posangle   = k1PA[i]; // XXX units
-    stars[Nstars].measure[2].psfQF      = k1Class[i];
+    stars[Nstars].measure[2].posangle   = ToShortDegrees(k1PA[i]); // XXX units
+    stars[Nstars].measure[2].psfQF      = psfQFfromXClass(k1Class[i]);
     stars[Nstars].measure[2].photFlags  = k1ppErrBits[i];
     stars[Nstars].measure[2].photFlags2 = photFlags2;
@@ -576,6 +576,6 @@
     stars[Nstars].measure[3].Mkron      = k2AperMag4[i];
     stars[Nstars].measure[3].dMkron     = k2AperMag4Err[i];
-    stars[Nstars].measure[3].posangle   = k2PA[i]; // XXX units
-    stars[Nstars].measure[3].psfQF      = k2Class[i];
+    stars[Nstars].measure[3].posangle   = ToShortDegrees(k2PA[i]); // XXX units
+    stars[Nstars].measure[3].psfQF      = psfQFfromXClass(k2Class[i]);
     stars[Nstars].measure[3].photFlags  = k2ppErrBits[i];
     stars[Nstars].measure[3].photFlags2 = photFlags2;
@@ -596,6 +596,6 @@
     stars[Nstars].measure[4].Mkron      = h2AperMag4[i];
     stars[Nstars].measure[4].dMkron     = h2AperMag4Err[i];
-    stars[Nstars].measure[4].posangle   = h2PA[i]; // XXX units
-    stars[Nstars].measure[4].psfQF      = h2Class[i];
+    stars[Nstars].measure[4].posangle   = ToShortDegrees(h2PA[i]); // XXX units
+    stars[Nstars].measure[4].psfQF      = psfQFfromXClass(h2Class[i]);
     stars[Nstars].measure[4].photFlags  = h2ppErrBits[i];
     stars[Nstars].measure[4].photFlags2 = photFlags2;
Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c	(revision 42018)
@@ -297,6 +297,6 @@
     stars[Nstars].measure[0].Mkron      = jAperMag4[i];
     stars[Nstars].measure[0].dMkron     = jAperMag4Err[i];
-    stars[Nstars].measure[0].posangle   = jPA[i]; // XXX units
-    stars[Nstars].measure[0].psfQF      = jClass[i];
+    stars[Nstars].measure[0].posangle   = ToShortDegrees(jPA[i]); // jPA is in degrees, posangle is short 
+    stars[Nstars].measure[0].psfQF      = psfQFfromXClass(jClass[i]);
     stars[Nstars].measure[0].photFlags  = jppErrBits[i];
     stars[Nstars].measure[0].photFlags2 = photFlags2;
Index: /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c	(revision 42018)
@@ -543,6 +543,6 @@
     stars[Nstars].measure[0].Mkron      = yAperMag4[i];
     stars[Nstars].measure[0].dMkron     = yAperMag4Err[i];
-    stars[Nstars].measure[0].posangle   = yPA[i]; // XXX units
-    stars[Nstars].measure[0].psfQF      = yClass[i];
+    stars[Nstars].measure[0].posangle   = ToShortDegrees(yPA[i]); // XXX units
+    stars[Nstars].measure[0].psfQF      = psfQFfromXClass(yClass[i]);
     stars[Nstars].measure[0].photFlags  = yppErrBits[i];
     stars[Nstars].measure[0].photFlags2 = photFlags2;
@@ -563,6 +563,6 @@
     stars[Nstars].measure[1].Mkron      = j1AperMag4[i];
     stars[Nstars].measure[1].dMkron     = j1AperMag4Err[i];
-    stars[Nstars].measure[1].posangle   = j1PA[i]; // XXX units
-    stars[Nstars].measure[1].psfQF      = j1Class[i];
+    stars[Nstars].measure[1].posangle   = ToShortDegrees(j1PA[i]); // XXX units
+    stars[Nstars].measure[1].psfQF      = psfQFfromXClass(j1Class[i]);
     stars[Nstars].measure[1].photFlags  = j1ppErrBits[i];
     stars[Nstars].measure[1].photFlags2 = photFlags2;
@@ -583,6 +583,6 @@
     stars[Nstars].measure[2].Mkron      = j2AperMag4[i];
     stars[Nstars].measure[2].dMkron     = j2AperMag4Err[i];
-    stars[Nstars].measure[2].posangle   = j2PA[i]; // XXX units
-    stars[Nstars].measure[2].psfQF      = j2Class[i];
+    stars[Nstars].measure[2].posangle   = ToShortDegrees(j2PA[i]); // XXX units
+    stars[Nstars].measure[2].psfQF      = psfQFfromXClass(j2Class[i]);
     stars[Nstars].measure[2].photFlags  = j2ppErrBits[i];
     stars[Nstars].measure[2].photFlags2 = photFlags2;
@@ -603,6 +603,6 @@
     stars[Nstars].measure[3].Mkron      = hAperMag4[i];
     stars[Nstars].measure[3].dMkron     = hAperMag4Err[i];
-    stars[Nstars].measure[3].posangle   = hPA[i]; // XXX units
-    stars[Nstars].measure[3].psfQF      = hClass[i];
+    stars[Nstars].measure[3].posangle   = ToShortDegrees(hPA[i]); // XXX units
+    stars[Nstars].measure[3].psfQF      = psfQFfromXClass(hClass[i]);
     stars[Nstars].measure[3].photFlags  = hppErrBits[i];
     stars[Nstars].measure[3].photFlags2 = photFlags2;
@@ -623,6 +623,6 @@
     stars[Nstars].measure[4].Mkron      = kAperMag4[i];
     stars[Nstars].measure[4].dMkron     = kAperMag4Err[i];
-    stars[Nstars].measure[4].posangle   = kPA[i]; // XXX units
-    stars[Nstars].measure[4].psfQF      = kClass[i];
+    stars[Nstars].measure[4].posangle   = ToShortDegrees(kPA[i]); // XXX units
+    stars[Nstars].measure[4].psfQF      = psfQFfromXClass(kClass[i]);
     stars[Nstars].measure[4].photFlags  = kppErrBits[i];
     stars[Nstars].measure[4].photFlags2 = photFlags2;
Index: /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/include/dvodb.h
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/include/dvodb.h	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/include/dvodb.h	(revision 42018)
@@ -240,4 +240,5 @@
       MEAS_OBJ_ID, 
       MEAS_CAT_ID, 
+      MEAS_EXT_ID, 
       MEAS_IMAGE_ID, 
       MEAS_PSF_QF, 
@@ -248,5 +249,5 @@
       MEAS_CR_NSIGMA, 
       MEAS_EXT_NSIGMA, 
-      MEAS_EXTERN_ID,
+      MEAS_IMAGE_EXTERN_ID, // return image.externID
       MEAS_EXPNAME_AS_INT,
       MEAS_MCAL_OFFSET_PSF, // make this a dvoMagOption?
Index: /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 42018)
@@ -696,4 +696,7 @@
       value.Int = measure[0].imageID;
       break;
+    case MEAS_EXT_ID: /* OK */
+      value.Int = measure[0].extID;
+      break;
     case MEAS_PSF_QF: /* OK */
       value.Flt = measure[0].psfQF;
@@ -714,5 +717,5 @@
       value.Flt = measure[0].extNsigma;
       break;
-    case MEAS_EXTERN_ID: /* OK */
+    case MEAS_IMAGE_EXTERN_ID: /* OK */
       if (REMOTE_CLIENT) {
 	ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
Index: /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbFields.c
===================================================================
--- /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbFields.c	(revision 42017)
+++ /branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/dbFields.c	(revision 42018)
@@ -603,5 +603,8 @@
   if (!strcasecmp (fieldName, "CATID"))      	 ESCAPE (MEAS_CAT_ID,         OPIHI_INT);
   if (!strcasecmp (fieldName, "IMAGEID"))    	 ESCAPE (MEAS_IMAGE_ID,       OPIHI_INT);
-  if (!strcasecmp (fieldName, "EXTERNID"))    	 ESCAPE (MEAS_EXTERN_ID,      OPIHI_INT);
+  if (!strcasecmp (fieldName, "IMAGE_EXTERN_ID")) ESCAPE (MEAS_IMAGE_EXTERN_ID, OPIHI_INT);
+  if (!strcasecmp (fieldName, "IMAGE_EXT_ID"))    ESCAPE (MEAS_IMAGE_EXTERN_ID, OPIHI_INT);
+  if (!strcasecmp (fieldName, "EXTERNID"))    	 ESCAPE (MEAS_EXT_ID,         OPIHI_INT);
+  if (!strcasecmp (fieldName, "EXT_ID"))    	 ESCAPE (MEAS_EXT_ID,         OPIHI_INT);
   if (!strcasecmp (fieldName, "EXPNAME"))    	 ESCAPE (MEAS_EXPNAME_AS_INT, OPIHI_INT);
   if (!strcasecmp (fieldName, "PSF_QF"))     	 ESCAPE (MEAS_PSF_QF,         OPIHI_FLT);
