Index: trunk/ippTools/src/chiptool.c
===================================================================
--- trunk/ippTools/src/chiptool.c	(revision 33112)
+++ trunk/ippTools/src/chiptool.c	(revision 33335)
@@ -198,4 +198,11 @@
         GET_VALUE (psS64,    S64, exp_id,        "exp_id");
         GET_VALUE (psString, Str, raw_workdir,   "workdir");
+#ifdef notyet
+        GET_VALUE (psString, Str, old_workdir,   "old_workdir");
+        GET_VALUE (psString, Str, old_data_group, "old_data_group");
+#else   
+        const char *old_workdir = NULL;
+        const char *old_data_group = NULL;
+#endif
         GET_VALUE (psString, Str, raw_label,     "label");
         GET_VALUE (psString, Str, raw_reduction, "reduction");
@@ -213,7 +220,7 @@
         if (!pxchipQueueByExpTag(config,
                                  exp_id,
-                                 workdir     ? workdir   : raw_workdir,
+                                 workdir     ? workdir   : (old_workdir ? old_workdir : raw_workdir),
                                  label       ? label     : raw_label,
-                                 data_group  ? data_group : (label ? label : raw_label),
+                                 data_group  ? data_group : (old_data_group ? old_data_group : (label ? label : raw_label)),
                                  dist_group,
                                  reduction   ? reduction : raw_reduction,
@@ -345,4 +352,5 @@
     pxAddLabelSearchArgs (config, where, "-label", "chipOld.label", "LIKE");
     pxAddLabelSearchArgs (config, where, "-data_group", "chipOld.data_group", "LIKE");
+    PXOPT_COPY_STR(config->args,  where, "-state",   "chipOld.state",   "==");
 
     // psListLength(where->list) is at least 1 because exp_type defaults to "object"
@@ -354,5 +362,5 @@
     }
 
-    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false);
+    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false);
     PXOPT_LOOKUP_STR(label, config->args, "-set_label", true, false);
     PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
@@ -468,4 +476,5 @@
     PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
     pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
 
     psString query = pxDataGet("chiptool_pendingimfile.sql");
@@ -2024,7 +2033,7 @@
         return false;
     }
-
     psFree(setHook);
     psFree(query);
+
     // if we are updating a whole chipRun set lingering chips with poor quality to full data_state
     if (!class_id) {
