Index: branches/czw_branch/20110406/ippTools/src/difftool.c
===================================================================
--- branches/czw_branch/20110406/ippTools/src/difftool.c	(revision 31417)
+++ branches/czw_branch/20110406/ippTools/src/difftool.c	(revision 31428)
@@ -1625,4 +1625,5 @@
     PXOPT_COPY_S64(config->args, selectWhere, "-exp_id", "inputRawExp.exp_id", "==");
     PXOPT_COPY_S64(config->args, selectWhere, "-template_exp_id", "templateRawExp.exp_id", "==");
+    PXOPT_COPY_S64(config->args, selectWhere, "-template_warp_id", "templateWarpRun.warp_id", "==");
     PXOPT_COPY_STR(config->args, selectWhere, "-filter", "inputRawExp.filter", "==");
     PXOPT_COPY_STR(config->args, selectWhere, "-obs_mode", "inputRawExp.obs_mode", "==");
Index: branches/czw_branch/20110406/ippTools/src/difftoolConfig.c
===================================================================
--- branches/czw_branch/20110406/ippTools/src/difftoolConfig.c	(revision 31417)
+++ branches/czw_branch/20110406/ippTools/src/difftoolConfig.c	(revision 31428)
@@ -278,4 +278,5 @@
     psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-not-bothways",  0, "only do the single-direction subtraction?", false);
     psMetadataAddS64(definewarpwarpArgs, PS_LIST_TAIL,  "-template_exp_id",  0,  "search by template exposure ID", 0);
+    psMetadataAddS64(definewarpwarpArgs, PS_LIST_TAIL,  "-template_warp_id",  0,  "search by template warp ID", 0);
     psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL);
     psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-distance", 0, "limit distance between input and template (deg)", NAN);
Index: branches/czw_branch/20110406/ippTools/src/laptool.c
===================================================================
--- branches/czw_branch/20110406/ippTools/src/laptool.c	(revision 31417)
+++ branches/czw_branch/20110406/ippTools/src/laptool.c	(revision 31428)
@@ -295,5 +295,8 @@
     return(false);
   }
-  psStringAppend(&query, " %s", whereClause);
+
+  if (whereClause) {
+    psStringSubstitute(&query,whereClause,"@WHERE@");
+  }
   psFree(where);
 
@@ -467,12 +470,11 @@
       }
       else {
-	return(false);
+	return(true); // We shouldn't really fail if we didn't change anything. Maybe there's nothing to change.
       }
     }
-    return(true);
-  }
-  else {
-    return(false);
-  }
+
+  }
+
+  return(true);
 }
 
@@ -496,14 +498,15 @@
   if (psListLength(where->list)) {
     psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-    psStringAppend(&query, " WHERE %s", whereClause);
+    psStringAppend(&query, "\n AND %s", whereClause);
     psFree(whereClause);
   }
-
+  psStringAppend(&query, " ORDER BY rawExp.dateobs ");
+  
   if (limit) {
     psString limitString = psDBGenerateLimitSQL(limit);
-    psStringAppend(&query, " %s", limitString);
+    psStringAppend(&query, "\n %s", limitString);
     psFree(limitString);
   }
-  psStringAppend(&query, " ORDER BY rawExp.dateobs ");
+
   
   if (!p_psDBRunQuery(config->dbh, query)) {
@@ -615,5 +618,5 @@
 
   psMetadata *where = psMetadataAlloc();
-  PXOPT_COPY_S64(config->args, where, "-lap_id", "lap_id", "==");
+  PXOPT_COPY_S64(config->args, where, "-lap_id", "lapRun.lap_id", "==");
   
   psString query = pxDataGet("laptool_stacks.sql");
