Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 18579)
+++ trunk/ippTools/src/stacktool.c	(revision 18674)
@@ -125,7 +125,6 @@
     PXOPT_LOOKUP_S32(randomLimit, config->args, "-random", false, false);
 
-    PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">=");
-    PXOPT_COPY_S32(config->args, having, "-min_new", "(num_warp - num_stack)", ">=");
-
+    PXOPT_LOOKUP_S32(min_num, config->args, "-min_num", false, false);
+    PXOPT_LOOKUP_S32(min_new, config->args, "-min_new", false, false);
     PXOPT_LOOKUP_F32(min_frac, config->args, "-min_frac", false, false);
 
@@ -172,21 +171,26 @@
     psFree(groupby);
 
-    if (psListLength(having->list)) {
-        psString havingClause = psDBGenerateWhereConditionSQL(having, NULL);
-        psStringAppend(&select, " HAVING %s", havingClause);
-        psFree(havingClause);
-    }
-
-    // Gotta handle this one explicitly --- want to avoid divisions
+    psString having = NULL;             // HAVING string
+    if (min_num > 0) {
+        psStringAppend(&having, " min_num >= %d", min_num);
+    }
+    if (min_new > 0) {
+        if (having) {
+            psStringAppend(&having, " AND");
+        }
+        psStringAppend(&having, " ((num_warp - num_stack >= %d) OR num_stack IS NULL)", min_new);
+    }
     if (isfinite(min_frac)) {
-        if (psListLength(having->list)) {
-            psStringAppend(&select, " AND");
-        } else {
-            psStringAppend(&select, " HAVING");
-        }
-        psStringAppend(&select, " num_warp >= %f * num_stack", (double)min_frac);
-    }
-
-    psFree(having);
+        if (having) {
+            psStringAppend(&having, " AND");
+        }
+        // Avoiding division by zero
+        psStringAppend(&select, " ((num_warp >= %f * num_stack) OR num_stack IS NULL)", (double)min_frac);
+    }
+    if (having) {
+        psStringAppend(&select, " HAVING %s", having);
+        psFree(having);
+    }
+
 
     if (!p_psDBRunQuery(config->dbh, select)) {
