Index: /trunk/ippToPsps/config/tables.IN.full.vot
===================================================================
--- /trunk/ippToPsps/config/tables.IN.full.vot	(revision 35779)
+++ /trunk/ippToPsps/config/tables.IN.full.vot	(revision 35780)
@@ -102279,5 +102279,8 @@
 	  <TR><TD>GOOD</TD><TD>67108864</TD><TD>good-quality measurement in our data (eg,PS)</TD></TR>
 	  <TR><TD>GOOD_ALT</TD><TD>134217728</TD><TD>good-quality measurement in  external data (eg, 2MASS)</TD></TR>
-        </TABLEDATA>
+    	  <TR><TD>OBJ_GOOD_STACK</TD><TD>268435456</TD><TD>good-quality object in the stack (> 1 good stack)</TD></TR>
+	  <TR><TD>OBJ_SUSPECT_STACK</TD>536870912<TD></TD><TD>suspect object in the stack (> 1 good or suspect stack, less tham 2 good)</TD></TR>
+	  <TR><TD>OBJ_BAD_STACK</TD><TD>1073741824</TD><TD>bad-quality object in the stack (> 1 good stack)</TD></TR>
+	</TABLEDATA>
       </DATA>
     </TABLE>
Index: /trunk/ippToPsps/config/tables.IN.vot
===================================================================
--- /trunk/ippToPsps/config/tables.IN.vot	(revision 35779)
+++ /trunk/ippToPsps/config/tables.IN.vot	(revision 35780)
@@ -806,4 +806,7 @@
 	  <TR><TD>GOOD</TD><TD>67108864</TD><TD>good-quality measurement in our data (eg,PS)</TD></TR>
 	  <TR><TD>GOOD_ALT</TD><TD>134217728</TD><TD>good-quality measurement in  external data (eg, 2MASS)</TD></TR>
+	  <TD>OBJ_GOOD_STACK</TD><TD>268435456</TD><TD>good-quality object in the stack (> 1 good stack)</TD>
+	  <TR><TD>OBJ_SUSPECT_STACK</TD>536870912<TD></TD><TD>suspect object in the stack (> 1 good or suspect stack, less tham 2 good)</TD></TR>
+	  <TR><TD>OBJ_BAD_STACK</TD><TD>1073741824</TD><TD>bad-quality object in the stack (> 1 good stack)</TD></TR>
         </TABLEDATA>
       </DATA>
Index: /trunk/ippToPsps/config/tables.ST.vot
===================================================================
--- /trunk/ippToPsps/config/tables.ST.vot	(revision 35779)
+++ /trunk/ippToPsps/config/tables.ST.vot	(revision 35780)
@@ -199,4 +199,7 @@
         <DESCRIPTION>PSF QF Perfect</DESCRIPTION>
       </FIELD> 
+      <FIELD name="psfChiSq" arraysize="1" datatype="float">
+        <DESCRIPTION> psf chi sq</DESCRIPTION>
+      </FIELD>
       <FIELD name="momentXX" arraysize="1" datatype="float">
         <DESCRIPTION> moment XX (unit = arcsec)</DESCRIPTION>
@@ -240,7 +243,4 @@
       <FIELD name="kronRad" arraysize="1" datatype="float">
         <DESCRIPTION> Kron radius (unit = arcsecs)</DESCRIPTION>
-      </FIELD>
-      <FIELD name="psfChiSq" arraysize="1" datatype="float">
-        <DESCRIPTION> psf chi sq</DESCRIPTION>
       </FIELD>
       <FIELD name="infoFlag" arraysize="1" datatype="long">
Index: /trunk/ippToPsps/jython/dvo.py
===================================================================
--- /trunk/ippToPsps/jython/dvo.py	(revision 35779)
+++ /trunk/ippToPsps/jython/dvo.py	(revision 35780)
@@ -190,5 +190,5 @@
 
             self.logger.infoPair("Running dvopsps", cmd)
-            p = Popen(cmd, shell=True, stdout=PIPE)
+            p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
             p.wait()
             if p.returncode != 0:
@@ -645,5 +645,5 @@
 
         self.logger.infoPair("Running dvopsps", cmd)
-        p = Popen(cmd, shell=True, stdout=PIPE)
+        p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
         p.wait()
         if p.returncode != 0:
Index: /trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- /trunk/ippToPsps/jython/stackbatch.py	(revision 35779)
+++ /trunk/ippToPsps/jython/stackbatch.py	(revision 35780)
@@ -616,4 +616,7 @@
     '''
     def populateStackApFlx(self):
+        self.logger.infoPair("getting","imageID")
+        imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
+        self.logger.infoPair("obtained","imageID")
 
         self.logger.infoPair("Procesing", "StackApFlx")
@@ -651,8 +654,19 @@
         self.scratchDb.execute(sql)
 
+        self.logger.infoPair("adding"," PrimaryF to stackApFlx")
+        sql = "UPDATE StackApFlx AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
+               a.primaryF = ((b.flags & 0x10000) >> 16 ) \
+               WHERE a.ippDetectID = b.ippDetectID \
+               AND b.imageID = " + str(imageID)
+
+        print "update dvo sql: ", sql
+        # response = raw_input("update dvo...")
+        self.scratchDb.execute(sql)
+
+        
+
         self.scratchDb.updateAllRows("StackApFlx", "surveyID", str(self.surveyID))
         self.scratchDb.updateFilterID("StackApFlx", self.filter)
         self.scratchDb.updateAllRows("StackApFlx", "dataRelease", str(self.skychunk.dataRelease))
-        self.scratchDb.updateAllRows("StackApFlx", "primaryF", "0")
         self.scratchDb.updateAllRows("StackApFlx", "activeFlag", "0")
         self.updateStackMetaID("StackApFlx")
@@ -667,6 +681,9 @@
     '''
     def populateStackModelFit(self):
-
+        self.logger.infoPair("getting","imageID")
+        imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
+        self.logger.infoPair("obtained","imageID")
         self.logger.infoPair("Procesing table", "StackModelFit")
+
 
         # insert all the detections
@@ -688,5 +705,18 @@
         self.scratchDb.updateFilterID("StackModelFit", self.filter)
         self.scratchDb.updateAllRows("StackModelFit", "dataRelease", str(self.skychunk.dataRelease))
-        self.scratchDb.updateAllRows("StackModelFit", "primaryF", "0")
+
+        self.logger.infoPair("adding"," PrimaryF to stackApFlx")
+        sql = "UPDATE StackModelFit AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
+               a.primaryF = ((b.flags & 0x10000) >> 16 ) \
+               WHERE a.ippDetectID = b.ippDetectID \
+               AND b.imageID = " + str(imageID)
+
+        print "update dvo sql: ", sql
+        # response = raw_input("update dvo...")
+        try:
+            self.scratchDb.execute(sql)
+        except:
+            return
+
         self.scratchDb.updateAllRows("StackModelFit", "activeFlag", "0")
         self.updateStackMetaID("StackModelFit")
@@ -943,10 +973,10 @@
                a.stackDetectID = b.detectID, \
                a.objID = b.objID, \
-               a.infoFlag = b.flags << 45 | a.infoFlag \
+               a.infoFlag = b.flags << 45 | a.infoFlag,  \
                a.primaryF = ((b.flags & 0x10000) >> 16 ) \
                WHERE a.ippDetectID = b.ippDetectID \
                AND b.imageID = " + str(imageID)
 
-        # print "update dvo sql: ", sql
+        print "update dvo sql: ", sql
         # response = raw_input("update dvo...")
         self.scratchDb.execute(sql)
