Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 23504)
+++ trunk/ippTools/src/difftool.c	(revision 23506)
@@ -1262,15 +1262,20 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    psMetadata *where = psMetadataAlloc();
-
-    // Restrictions
-    PXOPT_COPY_S64(config->args, where, "-warp_id", "inputWarpRun.warp_id", "==");
-    PXOPT_COPY_S64(config->args, where, "-exp_id", "inputRawExp.exp_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-filter", "inputRawExp.filter", "==");
-    PXOPT_COPY_STR(config->args, where, "-input_label", "inputWarpRun.label", "==");
-    PXOPT_COPY_STR(config->args, where, "-template_label", "templateWarpRun.label", "==");
-    PXOPT_COPY_F32(config->args, where, "-timediff",
+    psMetadata *selectWhere = psMetadataAlloc();
+    psMetadata *insertWhere = psMetadataAlloc();
+
+    // Restrictions for selecting warps
+    PXOPT_COPY_S64(config->args, selectWhere, "-warp_id", "inputWarpRun.warp_id", "==");
+    PXOPT_COPY_S64(config->args, selectWhere, "-exp_id", "inputRawExp.exp_id", "==");
+    PXOPT_COPY_STR(config->args, selectWhere, "-filter", "inputRawExp.filter", "==");
+    PXOPT_COPY_STR(config->args, selectWhere, "-input_label", "inputWarpRun.label", "==");
+    PXOPT_COPY_STR(config->args, selectWhere, "-template_label", "templateWarpRun.label", "==");
+    PXOPT_COPY_F32(config->args, selectWhere, "-timediff",
                    "ABS(TIME_TO_SEC(TIMEDIFF(inputRawExp.dateobs, templateRawExp.dateobs)))", "<=");
-    PXOPT_COPY_F32(config->args, where, "-rotdiff", "ABS(inputRawExp.posang - templateRawExp.posang)", "<=");
+    PXOPT_COPY_F32(config->args, selectWhere, "-rotdiff", "ABS(inputRawExp.posang - templateRawExp.posang)", "<=");
+
+    // Restrictions for inserting skycells
+    PXOPT_COPY_F32(config->args, insertWhere, "-good_frac", "inputWarpSkyfile.good_frac", ">=");
+    PXOPT_COPY_F32(config->args, insertWhere, "-good_frac", "templateWarpSkyfile.good_frac", ">=");
 
     // Additional controls
@@ -1294,10 +1299,10 @@
     psString whereClause = NULL; // The WHERE part of the query
 
-    if (psListLength(where->list)) {
-        psString new = psDBGenerateWhereConditionSQL(where, NULL);
+    if (psListLength(selectWhere->list)) {
+        psString new = psDBGenerateWhereConditionSQL(selectWhere, NULL);
         psStringAppend(&whereClause, "\n%s %s", whereClause ? "AND" : "WHERE", new);
         psFree(new);
     }
-    psFree(where);
+    psFree(selectWhere);
 
     if (!rerun) {
@@ -1313,4 +1318,5 @@
         psFree(select);
         psFree(whereClause);
+        psFree(insertWhere);
         return false;
     }
@@ -1322,4 +1328,5 @@
         psFree(select);
         psFree(whereClause);
+        psFree(insertWhere);
         if (!psDBRollback(config->dbh)) {
             psError(PS_ERR_UNKNOWN, false, "database error");
@@ -1347,4 +1354,5 @@
             psError(PS_ERR_UNKNOWN, false, "database error");
         }
+        psFree(insertWhere);
         return false;
     }
@@ -1352,4 +1360,5 @@
         psTrace("difftool", 1, "no rows found");
         psFree(results);
+        psFree(insertWhere);
         if (!psDBCommit(config->dbh)) {
             psError(PS_ERR_UNKNOWN, false, "database error");
@@ -1360,4 +1369,11 @@
 
     psString insert = pxDataGet("difftool_definewarpwarp_insert.sql"); // Insertion for each new run
+
+    if (psListLength(insertWhere->list)) {
+        psString whereClause = psDBGenerateWhereConditionSQL(insertWhere, NULL);
+        psStringAppend(&insert, "\n%s", whereClause);
+        psFree(whereClause);
+    }
+    psFree(insertWhere);
 
     psArray *list = psArrayAllocEmpty(16); // List of runs defined, to print
Index: trunk/ippTools/src/difftoolConfig.c
===================================================================
--- trunk/ippTools/src/difftoolConfig.c	(revision 23504)
+++ trunk/ippTools/src/difftoolConfig.c	(revision 23506)
@@ -174,4 +174,5 @@
     psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-input_label", 0, "search by warp label for input", NULL);
     psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-template_label", 0, "search by warp label for template", NULL);
+    psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN);
     psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL);
     psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-label",  0, "define label", NULL);
