Index: trunk/ippTools/src/addtool.c
===================================================================
--- trunk/ippTools/src/addtool.c	(revision 30906)
+++ trunk/ippTools/src/addtool.c	(revision 30907)
@@ -684,5 +684,5 @@
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
 
-    if (!pxSetFaultCode(config->dbh, "addProcessedExp", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "addProcessedExp", where, fault, 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
Index: trunk/ippTools/src/camtool.c
===================================================================
--- trunk/ippTools/src/camtool.c	(revision 30906)
+++ trunk/ippTools/src/camtool.c	(revision 30907)
@@ -983,4 +983,5 @@
 
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
+    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
 
     psMetadata *where = psMetadataAlloc();
@@ -990,5 +991,5 @@
     PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
 
-    if (!pxSetFaultCode(config->dbh, "camProcessedExp", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "camProcessedExp", where, fault, quality)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
Index: trunk/ippTools/src/camtoolConfig.c
===================================================================
--- trunk/ippTools/src/camtoolConfig.c	(revision 30906)
+++ trunk/ippTools/src/camtoolConfig.c	(revision 30907)
@@ -244,4 +244,5 @@
     psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
     psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code (required)", INT16_MAX);
+    psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-set_quality",  0,            "set quality", 0);
 
     // -block
Index: trunk/ippTools/src/chiptool.c
===================================================================
--- trunk/ippTools/src/chiptool.c	(revision 30906)
+++ trunk/ippTools/src/chiptool.c	(revision 30907)
@@ -963,6 +963,7 @@
     if (!state) {
       PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
-
-      if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, fault)) {
+      PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
+
+      if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, fault, quality)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         return false;
Index: trunk/ippTools/src/chiptoolConfig.c
===================================================================
--- trunk/ippTools/src/chiptoolConfig.c	(revision 30906)
+++ trunk/ippTools/src/chiptoolConfig.c	(revision 30907)
@@ -235,5 +235,5 @@
     psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code (required)", 0);
     psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0,         "set state", NULL);
-
+    psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_quality",  0,            "set quality", 0);
     // -processedExp
     psMetadata *listrunArgs = psMetadataAlloc();
Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 30906)
+++ trunk/ippTools/src/difftool.c	(revision 30907)
@@ -2681,4 +2681,5 @@
 
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
+    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
 
     psMetadata *where = psMetadataAlloc();
@@ -2686,5 +2687,5 @@
     PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id",   "==");
 
-    if (!pxSetFaultCode(config->dbh, "diffSkyfile", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "diffSkyfile", where, fault, quality)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
Index: trunk/ippTools/src/difftoolConfig.c
===================================================================
--- trunk/ippTools/src/difftoolConfig.c	(revision 30906)
+++ trunk/ippTools/src/difftoolConfig.c	(revision 30907)
@@ -411,6 +411,7 @@
     psMetadata *updatediffskyfileArgs = psMetadataAlloc();
     psMetadataAddS64(updatediffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0,      "define diff ID (required)", 0);
+    psMetadataAddStr(updatediffskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0,   "search by skycell ID", NULL);
     psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-fault", 0,        "set fault code (required)", 0);
-    psMetadataAddStr(updatediffskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0,   "search by skycell ID", NULL);
+    psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-set_quality", 0,      "set quality", 0);
 
     // -tocleanedskyfile
Index: trunk/ippTools/src/faketool.c
===================================================================
--- trunk/ippTools/src/faketool.c	(revision 30906)
+++ trunk/ippTools/src/faketool.c	(revision 30907)
@@ -706,5 +706,5 @@
     PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
 
-    if (!pxSetFaultCode(config->dbh, "fakeProcessedImfile", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "fakeProcessedImfile", where, fault, 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree(where);
Index: trunk/ippTools/src/pxfault.c
===================================================================
--- trunk/ippTools/src/pxfault.c	(revision 30906)
+++ trunk/ippTools/src/pxfault.c	(revision 30907)
@@ -26,5 +26,5 @@
 #include "pxtools.h"
 
-bool pxSetFaultCode(psDB *dbh, const char *tableName, psMetadata *where, psS16 code)
+bool pxSetFaultCode(psDB *dbh, const char *tableName, psMetadata *where, psS16 code, psS16 quality)
 {
     PS_ASSERT_PTR_NON_NULL(dbh, false);
@@ -48,4 +48,11 @@
         return false;
     }
+    if (quality) {
+        if (!psMetadataAddS16(values, PS_LIST_HEAD, "quality", 0, NULL, quality)) {
+            psError(PS_ERR_UNKNOWN, false, "failed to add metadata item quality");
+            psFree(values);
+            return false;
+        }
+    }
 
     long rowsAffected = psDBUpdateRows(dbh, tableName, where, values); 
Index: trunk/ippTools/src/pxtools.h
===================================================================
--- trunk/ippTools/src/pxtools.h	(revision 30906)
+++ trunk/ippTools/src/pxtools.h	(revision 30907)
@@ -75,5 +75,5 @@
 bool pxAddLabelSearchArgs (pxConfig *config, psMetadata *where, char *field, char *name, char *op);
 
-bool pxSetFaultCode(psDB *dbh, const char *tableName, psMetadata *where, psS16 code);
+bool pxSetFaultCode(psDB *dbh, const char *tableName, psMetadata *where, psS16 code, psS16 quality);
 bool pxExportVersion(pxConfig *config, FILE *f);
 bool pxCheckImportVersion(pxConfig *config, psMetadata *md);
Index: trunk/ippTools/src/pztool.c
===================================================================
--- trunk/ippTools/src/pztool.c	(revision 30906)
+++ trunk/ippTools/src/pztool.c	(revision 30907)
@@ -798,5 +798,5 @@
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
 
-    if (!pxSetFaultCode(config->dbh, "pzDownloadImfile", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "pzDownloadImfile", where, fault, 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 30906)
+++ trunk/ippTools/src/regtool.c	(revision 30907)
@@ -894,5 +894,5 @@
     if (fault != INT16_MAX) {
         // this is fairly dangerous : can set all if the where is not set...
-        if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) {
+        if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault, 0)) {
             psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
             psFree (where);
@@ -1608,5 +1608,5 @@
   PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
 
-  if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) {
+  if (!pxSetFaultCode(config->dbh, "rawExp", where, fault, 0)) {
     psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
     psFree(where);
Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 30906)
+++ trunk/ippTools/src/stacktool.c	(revision 30907)
@@ -1660,9 +1660,10 @@
 
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
+    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
 
     psMetadata *where = psMetadataAlloc();
     PXOPT_COPY_S64(config->args, where, "-stack_id",   "stack_id",   "==");
 
-    if (!pxSetFaultCode(config->dbh, "stackSumSkyfile", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "stackSumSkyfile", where, fault, quality)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
Index: trunk/ippTools/src/stacktoolConfig.c
===================================================================
--- trunk/ippTools/src/stacktoolConfig.c	(revision 30906)
+++ trunk/ippTools/src/stacktoolConfig.c	(revision 30907)
@@ -266,4 +266,5 @@
     psMetadataAddS64(updatesumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,            "define stack ID (required)", 0);
     psMetadataAddS16(updatesumskyfileArgs, PS_LIST_TAIL, "-fault", 0,            "set fault code (required)", 0);
+    psMetadataAddS16(updatesumskyfileArgs, PS_LIST_TAIL, "-set_quality", 0,            "set quality", 0);
 
     // -exportrun
Index: trunk/ippTools/src/staticskytool.c
===================================================================
--- trunk/ippTools/src/staticskytool.c	(revision 30906)
+++ trunk/ippTools/src/staticskytool.c	(revision 30907)
@@ -716,5 +716,5 @@
     PXOPT_COPY_S64(config->args, where, "-sky_id",   "sky_id",   "==");
 
-    if (!pxSetFaultCode(config->dbh, "staticskyResult", where, fault)) {
+    if (!pxSetFaultCode(config->dbh, "staticskyResult", where, fault, 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
         psFree (where);
