Index: trunk/ppImage/src/ppImageOptions.c
===================================================================
--- trunk/ppImage/src/ppImageOptions.c	(revision 29833)
+++ trunk/ppImage/src/ppImageOptions.c	(revision 29926)
@@ -301,10 +301,30 @@
     options->checkCTE       = psMetadataLookupBool(NULL, recipe, "CHECK.CTE");
 
+    /* doMaskBuild : there are some cases where we require a mask, so we force doMaskBuild to be set even if the user specified 'FALSE'
+     *
+     * doPhotom : a mask is required because it is used to mark the locations of stars
+     *
+     * doNoiseMap : no reason this needs to trigger a mask?
+     * doBias : no reason this needs to trigger a mask?
+     * doOverscan : no reason this needs to trigger a mask?
+     * doDark : no reason this needs to trigger a mask?
+     * doShutter : no reason this needs to trigger a mask?
+     * doFlat : no reason this needs to trigger a mask?
+     */
+
     // even if not requested explicitly, if any of these are set, build an internal mask and variance:
-    if (options->doNoiseMap || options->doBias || options->doOverscan || options->doDark || options->doShutter || options->doFlat ||
-        options->doPhotom) {
-        options->doMaskBuild = true;
+    // XXX we used to automatically generate a mask in all of these cases.
+    // if (options->doNoiseMap || options->doBias || options->doOverscan || options->doDark || options->doShutter || options->doFlat || options->doPhotom) {
+    //     options->doMaskBuild = true;
+    //     options->doVarianceBuild = true;
+    // }
+
+    // photometry and noisemap both require a variance image
+    if (options->doNoiseMap || options->doPhotom) {
         options->doVarianceBuild = true;
-    } else if (options->doMask || options->doBG) {
+    } 
+
+    // photometry, mask, and background all require a mask image
+    if (options->doMask || options->doBG || options->doPhotom) {
         options->doMaskBuild = true;
     }
