Index: /branches/eam_branches/ipp-20120905/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/libdvo/include/dvo.h	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/libdvo/include/dvo.h	(revision 34423)
@@ -149,27 +149,28 @@
 /* Average.flags values -- these values are 32 bit (as of PS1_V1) */
 typedef enum {
-  ID_STAR_FEW     = 0x00000001, // used within relphot: skip star
-  ID_STAR_POOR    = 0x00000002, // used within relphot: skip star
-  ID_PROPER       = 0x00000400, // star with large proper motion
-  ID_TRANSIENT    = 0x00001000, // is this mutually exclusive with USNO?
-  ID_VARIABLE     = 0x00002000, // not currently set?
-  ID_ASTEROID     = 0x00002000, // identified with an asteroid
-  ID_BAD_OBJECT   = 0x00004000, // if all measurements are bad, set this bit
-  ID_MOVING       = 0x00008000, // is a moving object
-  ID_ROCK         = 0x0000a000, // 0x8000 + 0x2000
-  ID_GHOST        = 0x0000c001, // 0x8000 + 0x4000 + 0x0001
-  ID_TRAIL        = 0x0000c002, // 0x8000 + 0x4000 + 0x0002
-  ID_BLEED        = 0x0000c003, // 0x8000 + 0x4000 + 0x0003
-  ID_COSMIC       = 0x0000c004, // 0x8000 + 0x4000 + 0x0004
-  ID_STAR_FIT_AVE = 0x00010000, // average position fitted
-  ID_STAR_FIT_PM  = 0x00020000, // proper motion fitted
-  ID_STAR_FIT_PAR = 0x00040000, // parallax fitted
-  ID_STAR_USE_AVE = 0x00080000, // average position used (not PM or PAR)
-  ID_STAR_USE_PM  = 0x00100000, // proper motion used (not AVE or PAR)
-  ID_STAR_USE_PAR = 0x00200000, // parallax used (not AVE or PM)
-  ID_OBJ_EXT      = 0x01000000, // extended in our data (eg, PS)
-  ID_OBJ_EXT_ALT  = 0x02000000, // extended in external data (eg, 2MASS)
-  ID_OBJ_GOOD     = 0x04000000, // good-quality measurement in our data (eg,PS)
-  ID_OBJ_GOOD_ALT = 0x08000000, // good-quality measurement in  external data (eg, 2MASS)
+  ID_STAR_FEW       = 0x00000001, // used within relphot: skip star
+  ID_STAR_POOR      = 0x00000002, // used within relphot: skip star
+  ID_PROPER         = 0x00000400, // star with large proper motion
+  ID_TRANSIENT      = 0x00001000, // is this mutually exclusive with USNO?
+  ID_VARIABLE       = 0x00002000, // not currently set?
+  ID_ASTEROID       = 0x00002000, // identified with an asteroid
+  ID_BAD_OBJECT     = 0x00004000, // if all measurements are bad, set this bit
+  ID_MOVING         = 0x00008000, // is a moving object
+  ID_ROCK           = 0x0000a000, // 0x8000 + 0x2000
+  ID_GHOST          = 0x0000c001, // 0x8000 + 0x4000 + 0x0001
+  ID_TRAIL          = 0x0000c002, // 0x8000 + 0x4000 + 0x0002
+  ID_BLEED          = 0x0000c003, // 0x8000 + 0x4000 + 0x0003
+  ID_COSMIC         = 0x0000c004, // 0x8000 + 0x4000 + 0x0004
+  ID_STAR_FIT_AVE   = 0x00010000, // average position fitted
+  ID_STAR_FIT_PM    = 0x00020000, // proper motion fitted
+  ID_STAR_FIT_PAR   = 0x00040000, // parallax fitted
+  ID_STAR_USE_AVE   = 0x00080000, // average position used (not PM or PAR)
+  ID_STAR_USE_PM    = 0x00100000, // proper motion used (not AVE or PAR)
+  ID_STAR_USE_PAR   = 0x00200000, // parallax used (not AVE or PM)
+  ID_STAR_NO_ASTROM = 0x00400000, // 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)
+  ID_OBJ_GOOD       = 0x04000000, // good-quality measurement in our data (eg,PS)
+  ID_OBJ_GOOD_ALT   = 0x08000000, // good-quality measurement in  external data (eg, 2MASS)
 } DVOAverageFlags;
 
@@ -180,4 +181,6 @@
   ID_SECF_USE_SYNTH   = 0x00000004, // synthetic photometry used in average measurement
   ID_SECF_USE_UBERCAL = 0x00000008, // synthetic photometry used in average measurement
+  ID_SECF_HAS_PS1     = 0x00000010, // PS1 photometry used in average measurement
+  ID_SECF_HAS_STACK   = 0x00000020, // PS1 stack photometry exists
   ID_PHOTOM_PASS_0    = 0x00000100, // average magnitude calculated in 0th pass
   ID_PHOTOM_PASS_1    = 0x00000200, // average magnitude calculated in 1th pass
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/UpdateObjects.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/UpdateObjects.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/UpdateObjects.c	(revision 34423)
@@ -168,9 +168,9 @@
       }
 
-      // if we have too few good detections for the desired fit, or too limited a baseline, use a
-      // fit with fewer parameters.  XXX if we have too few parameters for even the average
-      // position, consider including the lower-quality detections
-
-      catalog[i].average[j].flags &= ~ID_STAR_FEW;
+      // if we have too few good detections for the desired fit, or too limited a
+      // baseline, use a fit with fewer parameters.  XXX if we have too few measurements
+      // for even the average position, consider including the lower-quality detections?
+
+      catalog[i].average[j].flags &= ~ID_STAR_NO_ASTROM;
 
       // find Tmin & Tmax from the list of accepted measurements
@@ -197,5 +197,5 @@
 	// XXX need to define PHOTOM and ASTROM object flags
 	// XXX reset the average value fields?
-	catalog[i].average[j].flags |= ID_STAR_FEW;
+	catalog[i].average[j].flags |= ID_STAR_NO_ASTROM;
 	catalog[i].average[j].ChiSqAve  = NAN;
 	catalog[i].average[j].ChiSqPM   = NAN;
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/bcatalog.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/bcatalog.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/bcatalog.c	(revision 34423)
@@ -26,12 +26,11 @@
 
   DVOAverageFlags averageBits = 
-    ID_STAR_FEW     |
-    ID_STAR_POOR    |
-    ID_STAR_FIT_AVE |
-    ID_STAR_FIT_PM  |
-    ID_STAR_FIT_PAR |
-    ID_STAR_USE_AVE |
-    ID_STAR_USE_PM  |
-    ID_STAR_USE_PAR; 
+    ID_STAR_FIT_AVE   |
+    ID_STAR_FIT_PM    |
+    ID_STAR_FIT_PAR   |
+    ID_STAR_USE_AVE   |
+    ID_STAR_USE_PM    |
+    ID_STAR_USE_PAR   |
+    ID_STAR_NO_ASTROM ; 
 
   /* exclude stars not in range or with too few measurements */
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/initialize.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/initialize.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/initialize.c	(revision 34423)
@@ -19,8 +19,4 @@
 
   initstats (STATMODE);
-
-  // IMAGE_BAD = ID_IMAGE_ASTROM_POOR | ID_IMAGE_ASTROM_FEW | ID_IMAGE_ASTROM_SKIP;
-  // STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
-  // MEAS_BAD  = ID_MEAS_NOCAL | ID_MEAS_POOR_ASTROM | ID_MEAS_SKIP_ASTROM | ID_MEAS_AREA;
 
   /* XXX drop irrelevant entries */
@@ -57,8 +53,4 @@
 
   initstats (STATMODE);
-
-  // IMAGE_BAD = ID_IMAGE_ASTROM_POOR | ID_IMAGE_ASTROM_FEW | ID_IMAGE_ASTROM_SKIP;
-  // STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
-  // MEAS_BAD  = ID_MEAS_NOCAL | ID_MEAS_POOR_ASTROM | ID_MEAS_SKIP_ASTROM | ID_MEAS_AREA;
 }
 
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/liststats.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/liststats.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/liststats.c	(revision 34423)
@@ -136,5 +136,5 @@
     dS += M;
   }
-  X2 = X2 / Nm;
+  X2 = X2 / (Nm - 1);
   dS = sqrt (dS / Nm);
 
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/relastro_objects.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/relastro_objects.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relastro/src/relastro_objects.c	(revision 34423)
@@ -16,12 +16,11 @@
 
   DVOAverageFlags averageBits = 
-    ID_STAR_FEW     |
-    ID_STAR_POOR    |
-    ID_STAR_FIT_AVE |
-    ID_STAR_FIT_PM  |
-    ID_STAR_FIT_PAR |
-    ID_STAR_USE_AVE |
-    ID_STAR_USE_PM  |
-    ID_STAR_USE_PAR; 
+    ID_STAR_FIT_AVE   |
+    ID_STAR_FIT_PM    |
+    ID_STAR_FIT_PAR   |
+    ID_STAR_USE_AVE   |
+    ID_STAR_USE_PM    |
+    ID_STAR_USE_PAR   |
+    ID_STAR_NO_ASTROM ; 
 
   // XXX need to decide how to determine PARALLEL mode...
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/StarOps.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/StarOps.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/StarOps.c	(revision 34423)
@@ -365,4 +365,5 @@
       int haveSynth = FALSE;
       int haveStack = FALSE;
+      int havePS1   = FALSE;
 
       // need to find the measurement closest to the center of its skycell, as well as the
@@ -438,4 +439,5 @@
 	      }
 	    }
+	    havePS1 = TRUE;
 	  }
 	  // gpc1 stack data
@@ -678,4 +680,10 @@
 	  catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_USE_SYNTH;
 	}	
+	if (haveStack) {
+	  catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_HAS_STACK;
+	}	
+	if (havePS1) {
+	  catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_HAS_PS1;
+	}	
 	if (haveUbercal) {
 	  catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_USE_UBERCAL;
Index: /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/relphot_objects.c
===================================================================
--- /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/relphot_objects.c	(revision 34422)
+++ /branches/eam_branches/ipp-20120905/Ohana/src/relphot/src/relphot_objects.c	(revision 34423)
@@ -61,17 +61,28 @@
       Nsecfilt = catalog.Nsecfilt;
       DVOSecfiltFlags secfiltBits = 
-	ID_SECF_STAR_FEW | 
-	ID_SECF_STAR_POOR | 
-	ID_PHOTOM_PASS_0 | 
-	ID_PHOTOM_PASS_1 | 
-	ID_PHOTOM_PASS_2 | 
-	ID_PHOTOM_PASS_3 | 
-	ID_PHOTOM_PASS_4 |
-	ID_SECF_USE_SYNTH |
+	ID_SECF_STAR_FEW    | 
+	ID_SECF_STAR_POOR   | 
+	ID_PHOTOM_PASS_0    | 
+	ID_PHOTOM_PASS_1    | 
+	ID_PHOTOM_PASS_2    | 
+	ID_PHOTOM_PASS_3    | 
+	ID_PHOTOM_PASS_4    |
+	ID_SECF_USE_SYNTH   |
 	ID_SECF_USE_UBERCAL |
-	ID_SECF_OBJ_EXT;
+	ID_SECF_HAS_STACK   |
+	ID_SECF_HAS_PS1     |
+	ID_SECF_OBJ_EXT     ;
+      
+      DVOAverageFlags astromBits = 
+	ID_STAR_FIT_AVE   | 
+	ID_STAR_FIT_PM    | 
+	ID_STAR_FIT_PAR   | 
+	ID_STAR_USE_AVE   | 
+	ID_STAR_USE_PM    | 
+	ID_STAR_USE_PAR   |
+	ID_STAR_NO_ASTROM ; 
       
       for (j = 0; j < catalog.Naverage; j++) {
-	catalog.average[j].flags = 0;
+	catalog.average[j].flags &= astromBits; // reset all except astrometry bits
 	for (k = 0; k < Nsecfilt; k++) {
 	  catalog.secfilt[j*Nsecfilt + k].M    	 = NAN;
@@ -84,5 +95,6 @@
 	  catalog.secfilt[j*Nsecfilt + k].Ncode  = 0;
 	  catalog.secfilt[j*Nsecfilt + k].Nused  = 0;
-	  catalog.secfilt[j*Nsecfilt + k].flags &= ~secfiltBits;
+	  catalog.secfilt[j*Nsecfilt + k].flags &= ~secfiltBits; // XXX: only reset photom bits: 
+	  catalog.secfilt[j*Nsecfilt + k].flags  = 0;            // XXX: reset all secfilt flag bits:
 	  catalog.secfilt[j*Nsecfilt + k].ubercalDist = 1000;
 	}
