Index: /trunk/ippTools/share/magictool_definebyquery_select.sql
===================================================================
--- /trunk/ippTools/share/magictool_definebyquery_select.sql	(revision 26032)
+++ /trunk/ippTools/share/magictool_definebyquery_select.sql	(revision 26033)
@@ -1,4 +1,4 @@
 -- Get a list of exposures on which magic may be performed
-SELECT
+SELECT DISTINCT
     exp_id,
     MAX(diffWarps.diff_id) AS diff_id,
Index: /trunk/ippTools/src/magictool.c
===================================================================
--- /trunk/ippTools/src/magictool.c	(revision 26032)
+++ /trunk/ippTools/src/magictool.c	(revision 26033)
@@ -114,7 +114,7 @@
     // Required
     PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false);
+    PXOPT_LOOKUP_STR(label, config->args, "-label", true, false);
 
     // Optional
-    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
     PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false);
     PXOPT_LOOKUP_STR(note, config->args, "-note", false, false);
@@ -151,6 +151,9 @@
         // what if no skycells for the diff run completed?
 
-        if (!rerun) {
-            psStringAppend(&queryWhereStr, "\n%s magic_id IS NULL", queryWhereStr ? "AND" : "WHERE");
+        psStringAppend(&queryWhereStr, "\n%s (magic_id IS NULL", queryWhereStr ? "AND" : "WHERE");
+        if (rerun) {
+            psStringAppend(&queryWhereStr, " OR magicRun.label != '%s')", label);
+        } else {
+            psStringAppend(&queryWhereStr, ") ");
         }
 
Index: /trunk/ippTools/src/magictoolConfig.c
===================================================================
--- /trunk/ippTools/src/magictoolConfig.c	(revision 26032)
+++ /trunk/ippTools/src/magictoolConfig.c	(revision 26033)
@@ -50,5 +50,5 @@
     psMetadata *definebyqueryArgs = psMetadataAlloc();
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir",     0, "define workdir (required)", NULL);
-    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label",       0, "define label", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label",       0, "define label (required)", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dvodb",       0, "define dvodb", NULL);
     psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now);
