Index: trunk/ippTools/src/flatcorr.c
===================================================================
--- trunk/ippTools/src/flatcorr.c	(revision 20377)
+++ trunk/ippTools/src/flatcorr.c	(revision 20397)
@@ -39,4 +39,6 @@
 static bool addchipMode(pxConfig *config);
 static bool addcameraMode(pxConfig *config);
+static bool dropchipMode(pxConfig *config);
+static bool dropcameraMode(pxConfig *config);
 static bool pendingprocessMode(pxConfig *config);
 static bool addprocessMode(pxConfig *config);
@@ -69,4 +71,6 @@
         MODECASE(FLATCORR_MODE_ADDCHIP,        addchipMode);
         MODECASE(FLATCORR_MODE_ADDCAMERA,      addcameraMode);
+        MODECASE(FLATCORR_MODE_DROPCHIP,       dropchipMode);
+        MODECASE(FLATCORR_MODE_DROPCAMERA,     dropcameraMode);
         MODECASE(FLATCORR_MODE_PENDINGPROCESS, pendingprocessMode);
         MODECASE(FLATCORR_MODE_ADDPROCESS,     addprocessMode);
@@ -236,6 +240,6 @@
         }
 
-        // add a flatcorrChipLink to the flatcorr Run we just created
-        if (!flatcorrChipLinkInsert(config->dbh, corr_id, chip_id)) {
+        // add a flatcorrChipLink to the flatcorr Run we just created (initial state has include = TRUE)
+        if (!flatcorrChipLinkInsert(config->dbh, corr_id, chip_id, 1)) {
             if (!psDBRollback(config->dbh)) {
                 psError(PS_ERR_UNKNOWN, false, "database error");
@@ -337,6 +341,31 @@
     PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false);
 
-    if (!flatcorrChipLinkInsert(config->dbh, corr_id, chip_id)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+    // add a flatcorrChipLink (initial state has include = TRUE)
+    if (!flatcorrChipLinkInsert(config->dbh, corr_id, chip_id, 1)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+
+    return true;
+}
+
+static bool dropchipMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    // required
+    PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false);
+    PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false);
+
+    // UPDATE flatcorrChipLink set include = 0 where corr_id = %lld AND chip_id = %lld
+    psString query = pxDataGet("flatcorr_dropchip.sql");
+    if (!query) {
+	psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+	return false;
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query, (long long) corr_id, (long long) chip_id)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
         return false;
     }
@@ -448,6 +477,6 @@
 	psS64 cam_id = psDBLastInsertID(config->dbh);
 
-	// add the camRun entry to the flatcorrCamLink table:
-        if (!flatcorrCamLinkInsert(config->dbh, corr_id, row->chip_id, cam_id)) {
+	// add the camRun entry to the flatcorrCamLink table (include is TRUE)
+        if (!flatcorrCamLinkInsert(config->dbh, corr_id, row->chip_id, cam_id, 1)) {
             if (!psDBRollback(config->dbh)) {
                 psError(PS_ERR_UNKNOWN, false, "database error");
@@ -467,4 +496,28 @@
 
     return false;
+}
+
+static bool dropcameraMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    // required
+    PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false);
+    PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", true, false);
+
+    // UPDATE flatcorrCamLink set include = 0 where corr_id = %lld AND cam_id = %lld
+    psString query = pxDataGet("flatcorr_dropcamera.sql");
+    if (!query) {
+	psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+	return false;
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query, (long long) corr_id, (long long) cam_id)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+
+    return true;
 }
 
Index: trunk/ippTools/src/flatcorr.h
===================================================================
--- trunk/ippTools/src/flatcorr.h	(revision 20377)
+++ trunk/ippTools/src/flatcorr.h	(revision 20397)
@@ -29,4 +29,6 @@
     FLATCORR_MODE_ADDCHIP,
     FLATCORR_MODE_ADDCAMERA,
+    FLATCORR_MODE_DROPCHIP,
+    FLATCORR_MODE_DROPCAMERA,
     FLATCORR_MODE_PENDINGPROCESS,
     FLATCORR_MODE_ADDPROCESS,
Index: trunk/ippTools/src/flatcorrConfig.c
===================================================================
--- trunk/ippTools/src/flatcorrConfig.c	(revision 20377)
+++ trunk/ippTools/src/flatcorrConfig.c	(revision 20397)
@@ -81,4 +81,9 @@
     psMetadataAddS64(addchipArgs, PS_LIST_TAIL, "-chip_id", 0,            "define Chip ID (required)", 0);
 
+    // -dropchip
+    psMetadata *dropchipArgs = psMetadataAlloc();
+    psMetadataAddS64(dropchipArgs, PS_LIST_TAIL, "-corr_id", 0,            "define Flat Correction ID (required)", 0);
+    psMetadataAddS64(dropchipArgs, PS_LIST_TAIL, "-chip_id", 0,            "define Chip ID (required)", 0);
+
     // -addcamera
     psMetadata *addcameraArgs = psMetadataAlloc();
@@ -86,4 +91,9 @@
     psMetadataAddBool(addcameraArgs, PS_LIST_TAIL, "-simple",  0, "use the simple output format", false);
     psMetadataAddBool(addcameraArgs, PS_LIST_TAIL, "-pretend", 0, "use the simple output format", false);
+
+    // -dropcamera
+    psMetadata *dropcameraArgs = psMetadataAlloc();
+    psMetadataAddS64(dropcameraArgs, PS_LIST_TAIL, "-corr_id", 0,      "define Flat Correction ID (required)", 0);
+    psMetadataAddS64(dropcameraArgs, PS_LIST_TAIL, "-cam_id", 0,       "define Camera ID (required)", 0);
 
     // -pendingprocess
@@ -124,4 +134,6 @@
     PXOPT_ADD_MODE("-addchip",        "add a chip to a flat correction run",               FLATCORR_MODE_ADDCHIP,        addchipArgs);
     PXOPT_ADD_MODE("-addcamera",      "migrate completed chips to camera stage analysis",  FLATCORR_MODE_ADDCAMERA,      addcameraArgs);
+    PXOPT_ADD_MODE("-dropchip",       "drop a chip from a flat correction run",            FLATCORR_MODE_DROPCHIP,       dropchipArgs);
+    PXOPT_ADD_MODE("-dropcamera",     "drop an exposure (camera stage analysis)",          FLATCORR_MODE_DROPCAMERA,     dropcameraArgs);
     PXOPT_ADD_MODE("-pendingprocess", "show flat correction runs needing to be processed", FLATCORR_MODE_PENDINGPROCESS, pendingprocessArgs);
     PXOPT_ADD_MODE("-addprocess",     "report completed flat correction analysis",         FLATCORR_MODE_ADDPROCESS,     addprocessArgs);
