Index: /trunk/ippTools/share/Makefile.am
===================================================================
--- /trunk/ippTools/share/Makefile.am	(revision 14101)
+++ /trunk/ippTools/share/Makefile.am	(revision 14102)
@@ -41,3 +41,4 @@
 	warptool_tooverlap.sql \
 	warptool_towarped.sql \
-	warptool_warped.sql
+	warptool_warped.sql \
+	warptool_revertwarped.sql
Index: /trunk/ippTools/share/warptool_revertwarped.sql
===================================================================
--- /trunk/ippTools/share/warptool_revertwarped.sql	(revision 14102)
+++ /trunk/ippTools/share/warptool_revertwarped.sql	(revision 14102)
@@ -0,0 +1,3 @@
+DELETE FROM warpSkyfile
+WHERE
+    fault != 0
Index: /trunk/ippTools/src/warptool.c
===================================================================
--- /trunk/ippTools/src/warptool.c	(revision 14101)
+++ /trunk/ippTools/src/warptool.c	(revision 14102)
@@ -42,4 +42,5 @@
 static bool addwarpedMode(pxConfig *config);
 static bool warpedMode(pxConfig *config);
+static bool revertwarpedMode(pxConfig *config);
 
 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile);
@@ -77,4 +78,5 @@
         MODECASE(WARPTOOL_MODE_ADDWARPED,         addwarpedMode);
         MODECASE(WARPTOOL_MODE_WARPED,            warpedMode);
+        MODECASE(WARPTOOL_MODE_REVERTWARPED,      revertwarpedMode);
         default:
             psAbort("invalid option (this should not happen)");
@@ -884,4 +886,11 @@
     }
 
+    // default values
+    psS16 code = psMetadataLookupS16(&status, config->args, "-code");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code");
+        return false;
+    }
+
     // we don't want to insert the last skyfile in a run but then not mark the
     // run as 'stop'
@@ -899,5 +908,6 @@
             path_base,
             bg,
-            bg_stdev
+            bg_stdev,
+            code
         )) {
         if (!psDBRollback(config->dbh)) {
@@ -1119,4 +1129,36 @@
 
 
+static bool revertwarpedMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    psString query = pxDataGet("warpool_revertwarped.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    if (config->where) {
+        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "warpSkyfile");
+        psStringAppend(&query, " AND %s", whereClause);
+        psFree(whereClause);
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    if (psDBAffectedRows(config->dbh) < 1) {
+        psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");
+        return false;
+    }
+
+    return true;
+}
+
+
 static bool setwarpRunState(pxConfig *config, const char *warp_id, const char *state)
 {
Index: /trunk/ippTools/src/warptool.h
===================================================================
--- /trunk/ippTools/src/warptool.h	(revision 14101)
+++ /trunk/ippTools/src/warptool.h	(revision 14102)
@@ -36,4 +36,5 @@
     WARPTOOL_MODE_ADDWARPED,
     WARPTOOL_MODE_WARPED,
+    WARPTOOL_MODE_REVERTWARPED,
 } warptoolMode;
 
Index: /trunk/ippTools/src/warptoolConfig.c
===================================================================
--- /trunk/ippTools/src/warptoolConfig.c	(revision 14101)
+++ /trunk/ippTools/src/warptoolConfig.c	(revision 14102)
@@ -156,4 +156,7 @@
     psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg_stdev",  0,
             "define exposure background stdev", NAN);
+    psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-code",  0,
+            "set fault code", 0);
+
 
     // -warped
@@ -173,4 +176,16 @@
     psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
+
+    // -revertwarped
+    psMetadata *revertwarpedArgs = psMetadataAlloc();
+    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-warp_id", 0,
+            "search by warptool ID (required)", NULL);
+    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-skycell_id",  0,
+            "search by skycell ID", NULL);
+    psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-tess_id",  0,
+            "searcy by tessellation ID", NULL);
+    psMetadataAddS16(revertwarpedArgs, PS_LIST_TAIL, "-code",  0,
+            "search by fault code", 0);
+
 
     psFree(now);
@@ -190,12 +205,5 @@
     PXTOOL_ADD_MODE("-addwarped",       "", WARPTOOL_MODE_ADDWARPED,      addwarpedArgs);
     PXTOOL_ADD_MODE("-warped",          "", WARPTOOL_MODE_WARPED,         warpedArgs);
-#if 0
-    PXTOOL_ADD_MODE("-tostackedimfile", WARPTOOL_MODE_TOSTACKEDIMFILE, tostackedimfileArgs);
-    PXTOOL_ADD_MODE("-addstackedimfile", WARPTOOL_MODE_ADDSTACKEDIMFILE, addstackedimfileArgs);
-    PXTOOL_ADD_MODE("-stackedimfile",   WARPTOOL_MODE_STACKEDIMFILE, stackedimfileArgs);
-    PXTOOL_ADD_MODE("-todiffimfile", WARPTOOL_MODE_TODIFFIMFILE, todiffimfileArgs);
-    PXTOOL_ADD_MODE("-adddiffimfile", WARPTOOL_MODE_ADDDIFFIMFILE, adddiffimfileArgs);
-    PXTOOL_ADD_MODE("-diffimfile",   WARPTOOL_MODE_DIFFIMFILE, diffimfileArgs);
-#endif
+    PXTOOL_ADD_MODE("-revertwarped",    "", WARPTOOL_MODE_REVERTWARPED,   revertwarpedArgs);
 
     if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
@@ -256,4 +264,17 @@
     addWhereStr(exp_id);
 
+    // convert '-code' to 'fault'
+    {
+        psS16 fault = 0;
+        bool status = false;
+        if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {
+            if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {
+                psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+                psFree(config);
+                return NULL;
+            }
+        }
+    }
+
     if (config->where->list->n < 1) {
         psFree(config->where);
