Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 9956)
+++ /trunk/ippTools/src/dettool.c	(revision 9957)
@@ -968,7 +968,51 @@
     }
 
+    // create a metadata to restrict detInputExp's be in in the specified range
+
+    psMetadata *time_filter = psMetadataAlloc();
+
+    {
+        psString timeStr = psMetadataLookupStr(&status, config->args, "-filter_exp_begin");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter_exp_begin");
+            return false;
+        }
+        // pass through NULL as this is an optional field
+        if (timeStr) {
+            psTime *time = psTimeFromISO(timeStr, PS_TIME_UTC);
+            if (!psMetadataAddTime(time_filter, PS_LIST_TAIL, "dateobs", 0, "==", time)) {
+                psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
+                psFree(time);
+                psFree(time_filter);
+                return false;
+            }
+            psFree(time);
+        }
+    }
+
+    {
+        psString timeStr = psMetadataLookupStr(&status, config->args, "-filter_exp_end");
+        if (!status) {
+            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter_exp_end");
+            return false;
+        }
+        // pass through NULL as this is an optional field
+        if (timeStr) {
+            psTime *time = psTimeFromISO(timeStr, PS_TIME_UTC);
+            if (!psMetadataAddTime(time_filter, PS_LIST_TAIL, "dateobs", 0, "==", time)) {
+                psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
+                psFree(time);
+                psFree(time_filter);
+                return false;
+            }
+            psFree(time);
+        }
+    }
+
+
     // start a transaction so we don't end up with orphaned det_ids
     if (!psDBTransaction(config->dbh)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(time_filter);
         psFree(detRun);
         return false;
@@ -981,4 +1025,5 @@
             psError(PS_ERR_UNKNOWN, false, "database error");
         }
+        psFree(time_filter);
         psFree(detRun);
         return false;
@@ -989,5 +1034,5 @@
     long newDet_id = psDBLastInsertID(config->dbh);
 
-    char *query = 
+    psString query = psStringCopy(
         "INSERT INTO detInputExp"
         "   SELECT"
@@ -997,10 +1042,22 @@
         "       detResidExp.accept"
         "   FROM detResidExp"
-        "   WHERE det_id = %d";
+        "   JOIN rawDetrendExp"
+        "       USING(exp_tag)"
+        "   WHERE det_id = %d"
+    );
+
+    if (time_filter->list->n) {
+        psString whereClause = psDBGenerateWhereConditionSQL(time_filter, "rawDetrendExp");
+        psStringAppend(&query, " AND %s", whereClause);
+        psFree(whereClause);
+    }
+    psFree(time_filter);
 
     if (!p_psDBRunQuery(config->dbh, query, (psS32)newDet_id, (psS32)atoi(det_id))) {
         psError(PS_ERR_UNKNOWN, false, "database error");
-        return false;
-    }
+        psFree(query);
+        return false;
+    }
+    psFree(query);
 
     // point of no return for det_id creation
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 9956)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 9957)
@@ -95,24 +95,36 @@
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-det_id",  0,
             "det ID to base the new detrun on (required)", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-det_type",  0,
+            "define the type of detrend run (required)", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-exp_type",  0,
+            "search for exp_type", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-inst",  0,
+            "search for camera", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-telescope",  0,
+            "search for telescope", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filter",  0,
+            "search for filter", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-uri",  0,
+            "search for uri", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_exp_type",  0,
-        "define exposure type", NULL);
+            "define exposure type", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_filter",  0,
-        "define filter ", NULL);
+            "define filter ", NULL);
     psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-set_airmass",  0,
-        "define airmass", NAN);
+            "define airmass", NAN);
     psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-set_exp_time",  0,
-        "define exposure time", NAN);
+            "define exposure time", NAN);
     psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-set_ccd_temp",  0,
-        "define ccd tempature", NAN);
+            "define ccd tempature", NAN);
     psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-set_posang",  0,
-        "define rotator position angle", NAN);
+            "define rotator position angle", NAN);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_object",  0,
-        "define exposure object", NULL);
+            "define exposure object", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_registered",  0,
-        "time detrend run was registered", now);
+            "time detrend run was registered", now);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_use_begin",  0,
-        "start of detrend run applicable peroid", NULL);
+            "start of detrend run applicable peroid", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_use_end",  0,
-        "end of detrend run applicable peroid", NULL);
+            "end of detrend run applicable peroid", NULL);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
@@ -142,4 +154,8 @@
     psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_use_end",  0,
         "end of detrend run applicable peroid", NULL);
+    psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-filter_exp_begin",  0,
+        "filter input detrun exp to be in this peroid", NULL);
+    psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-filter_exp_end",  0,
+        "filter input detrun exp to be in this peroid", NULL);
     psMetadataAddBool(definebydetrunArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
