Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 10740)
+++ /trunk/ippTools/src/dettool.c	(revision 10741)
@@ -3444,4 +3444,11 @@
 detResidImfileAnalysis;
 */
+
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
 
     psString query = psStringCopy(
@@ -3521,4 +3528,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -3997,4 +4011,11 @@
 
 
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
+
     // select detRun.det_id
     // select detRun.iteration
@@ -4065,4 +4086,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -4466,4 +4494,11 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+    bool status = false;
+    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit");
+        return false;
+    }
+
     /* which returns a list of detrend runs (with detrend id, iteration and
      * detrend type) which have completed all residexps.
@@ -4522,4 +4557,11 @@
 #endif
 
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     if (!p_psDBRunQuery(config->dbh, query)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 10740)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 10741)
@@ -525,4 +525,6 @@
     psMetadataAddBool(residdetrunArgs, PS_LIST_TAIL, "-simple",  0,
             "use the simple output format", false);
+    psMetadataAddU64(residdetrunArgs, PS_LIST_TAIL, "-limit",  0,
+            "limit result set to N items", 0);
 
     // -updateresidexp
