Index: trunk/ippTools/src/detselect.c
===================================================================
--- trunk/ippTools/src/detselect.c	(revision 18561)
+++ trunk/ippTools/src/detselect.c	(revision 23998)
@@ -71,4 +71,26 @@
 }
 
+# define PXOPT_COPY_NULLTEST_F32(from, to, oldname, newname, comment) \
+{ \
+    bool status = false; \
+    psF32 var = psMetadataLookupF32(&status, from, oldname); \
+    if (!status) { \
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for " oldname); \
+        return false; \
+    } \
+    if (!isnan(var)) { \
+        if (!psMetadataAddF32(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, comment, var)) { \
+            psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \
+            psFree(to); \
+            return false; \
+        } \
+        if (!psMetadataAddTime(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, "==", NULL)) { \
+            psError(PS_ERR_UNKNOWN, false, "failed to add NULL test " newname); \
+            psFree(to); \
+            return false; \
+        } \
+    } \
+}
+
 static bool searchMode(pxConfig *config)
 {
@@ -89,14 +111,14 @@
 
     // airmass_min  < airmass  < airmass_max
-    PXOPT_COPY_F32(config->args, where, "-airmass", "airmass_min", "<=");
-    PXOPT_COPY_F32(config->args, where, "-airmass", "airmass_max", ">=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-airmass", "airmass_min", "<=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-airmass", "airmass_max", ">=");
 
     // exp_time_min < exp_time < exp_time_max
-    PXOPT_COPY_F32(config->args, where, "-exp_time", "exp_time_min", "<=");
-    PXOPT_COPY_F32(config->args, where, "-exp_time", "exp_time_max", ">=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-exp_time", "exp_time_min", "<=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-exp_time", "exp_time_max", ">=");
 
     // ccd_temp_min < ccd_temp < ccd_temp_max
-    PXOPT_COPY_F32(config->args, where, "-ccd_temp", "ccd_temp_min", "<=");
-    PXOPT_COPY_F32(config->args, where, "-ccd_temp", "ccd_temp_max", ">=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-ccd_temp", "ccd_temp_min", "<=");
+    PXOPT_COPY_NULLTEST_F32(config->args, where, "-ccd_temp", "ccd_temp_max", ">=");
 
     PXOPT_COPY_F64(config->args, where, "-posang", "posang_min", "<=");
