Index: /trunk/ippTools/src/warptool.c
===================================================================
--- /trunk/ippTools/src/warptool.c	(revision 24425)
+++ /trunk/ippTools/src/warptool.c	(revision 24426)
@@ -38,4 +38,5 @@
 static bool tooverlapMode(pxConfig *config);
 static bool addoverlapMode(pxConfig *config);
+static bool revertoverlapMode(pxConfig *config);
 static bool scmapMode(pxConfig *config);
 static bool towarpedMode(pxConfig *config);
@@ -86,4 +87,5 @@
         MODECASE(WARPTOOL_MODE_TOOVERLAP,          tooverlapMode);
         MODECASE(WARPTOOL_MODE_ADDOVERLAP,         addoverlapMode);
+        MODECASE(WARPTOOL_MODE_REVERTOVERLAP,      revertoverlapMode);
         MODECASE(WARPTOOL_MODE_SCMAP,              scmapMode);
         MODECASE(WARPTOOL_MODE_TOWARPED,           towarpedMode);
@@ -650,7 +652,7 @@
         warpSkyCellMapInsert(config->dbh,
             warp_id,
-            NULL,   // skycell_id
-            NULL,   // tess_id
-            NULL,   // class_id
+            "faulted",   // skycell_id
+            "faulted",   // tess_id
+            "faulted",   // class_id
             fault    // fault
         );
@@ -665,4 +667,60 @@
     return true;
 }
+
+static bool revertoverlapMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-warp_id",    "warpSkyCellMap.warp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-tess_id",    "warpSkyCellMap.tess_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-label",      "warpRun.label", "==");
+    PXOPT_COPY_S16(config->args, where, "-fault",      "warpSkyCellMap.fault", "==");
+
+    if (!psListLength(where->list)
+        && !psMetadataLookupBool(NULL, config->args, "-all")) {
+        psFree(where);
+        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
+        return false;
+    }
+
+    int numDeleted;                     // Number deleted
+    {
+        psString query = pxDataGet("warptool_revertoverlap.sql");
+        if (!query) {
+            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+            if (!psDBRollback(config->dbh)) {
+                psError(PS_ERR_UNKNOWN, false, "database error");
+            }
+            return false;
+        }
+
+        if (psListLength(where->list)) {
+            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+            psStringAppend(&query, " AND %s", whereClause);
+            psFree(whereClause);
+        }
+
+        if (!p_psDBRunQuery(config->dbh, query)) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            psFree(query);
+            if (!psDBRollback(config->dbh)) {
+                psError(PS_ERR_UNKNOWN, false, "database error");
+            }
+            return false;
+        }
+        psFree(query);
+
+        numDeleted = psDBAffectedRows(config->dbh);
+    }
+
+    psLogMsg("warptool", PS_LOG_INFO, "Deleted %d warpSkycellMap", numDeleted);
+
+    psFree(where);
+
+    return true;
+}
+
 
 
@@ -1223,56 +1281,4 @@
     }
 
-
-#ifdef notdef
-    int numUpdated = 0;                     // Number updated
-    {
-    // Update state to 'new'
-        // This query is no longer necessary because we do not set warpRun's to full statte
-        // if they have faulted skyfiles.
-        // We do have runs in the DB that follow the old convention so we leave this in for
-        // now
-        psString query = pxDataGet("warptool_revertwarped_update.sql");
-        if (!query) {
-            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
-            return false;
-        }
-
-        if (psListLength(where->list)) {
-            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-            psStringAppend(&query, " AND %s", whereClause);
-            psFree(whereClause);
-        }
-
-        if (!p_psDBRunQuery(config->dbh, query)) {
-            psError(PS_ERR_UNKNOWN, false, "database error");
-            psFree(query);
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
-            return false;
-        }
-        psFree(query);
-
-        numUpdated = psDBAffectedRows(config->dbh);
-
-#ifdef notdef
-        // new warpRuns won't get changed (they're already new) so don't require an update
-        if (numUpdated < 1) {
-            psError(PS_ERR_UNKNOWN, false, "should have affected at least 1 row");
-            if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
-            }
-            return false;
-        }
-#endif
-    }
-
-    psLogMsg("warptool", PS_LOG_INFO, "Updated %d warp runs", numUpdated);
-
-#endif // notdef
-
     // Delete product
     int numDeleted;                     // Number deleted
Index: /trunk/ippTools/src/warptool.h
===================================================================
--- /trunk/ippTools/src/warptool.h	(revision 24425)
+++ /trunk/ippTools/src/warptool.h	(revision 24426)
@@ -34,4 +34,5 @@
     WARPTOOL_MODE_TOOVERLAP,
     WARPTOOL_MODE_ADDOVERLAP,
+    WARPTOOL_MODE_REVERTOVERLAP,
     WARPTOOL_MODE_SCMAP,
     WARPTOOL_MODE_TOWARPED,
Index: /trunk/ippTools/src/warptoolConfig.c
===================================================================
--- /trunk/ippTools/src/warptoolConfig.c	(revision 24425)
+++ /trunk/ippTools/src/warptoolConfig.c	(revision 24426)
@@ -157,4 +157,14 @@
     psMetadataAddS16(addoverlapArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
 
+    // -revertoverlap
+    psMetadata *revertoverlapArgs = psMetadataAlloc();
+    psMetadataAddS64(revertoverlapArgs, PS_LIST_TAIL, "-warp_id", 0,            "search by warptool ID", 0);
+    psMetadataAddStr(revertoverlapArgs, PS_LIST_TAIL, "-skycell_id",  0,            "search by skycell ID", NULL);
+    psMetadataAddStr(revertoverlapArgs, PS_LIST_TAIL, "-tess_id",  0,            "search by tessellation ID", NULL);
+    psMetadataAddStr(revertoverlapArgs, PS_LIST_TAIL, "-label",  0,            "search by warpRun label", NULL);
+    psMetadataAddS16(revertoverlapArgs, PS_LIST_TAIL, "-fault",  0,            "search by fault code", 0);
+    psMetadataAddBool(revertoverlapArgs, PS_LIST_TAIL, "-all",  0,            "allow everything to be queued without search terms", false);
+
+
     // -scmap
     psMetadata *scmapArgs = psMetadataAlloc();
@@ -300,4 +310,5 @@
     PXOPT_ADD_MODE("-tooverlap",       "", WARPTOOL_MODE_TOOVERLAP,      tooverlapArgs);
     PXOPT_ADD_MODE("-addoverlap",      "", WARPTOOL_MODE_ADDOVERLAP,     addoverlapArgs);
+    PXOPT_ADD_MODE("-revertoverlap",   "", WARPTOOL_MODE_REVERTOVERLAP,  revertoverlapArgs);
     PXOPT_ADD_MODE("-scmap",           "", WARPTOOL_MODE_SCMAP,          scmapArgs);
     PXOPT_ADD_MODE("-towarped",        "", WARPTOOL_MODE_TOWARPED,       towarpedArgs);
