Index: trunk/psModules/src/objects/pmSource.c
===================================================================
--- trunk/psModules/src/objects/pmSource.c	(revision 33993)
+++ trunk/psModules/src/objects/pmSource.c	(revision 34085)
@@ -51,7 +51,5 @@
     psFree(tmp->pixels);
     psFree(tmp->variance);
-# if (HAVE_MODEL_VAR)
     psFree(tmp->modelVar);
-# endif
     psFree(tmp->maskObj);
     psFree(tmp->maskView);
@@ -80,7 +78,5 @@
     psFree (source->pixels);
     psFree (source->variance);
-# if (HAVE_MODEL_VAR)
     psFree (source->modelVar);
-# endif
     psFree (source->maskObj);
     psFree (source->maskView);
@@ -90,7 +86,5 @@
     source->pixels = NULL;
     source->variance = NULL;
-# if (HAVE_MODEL_VAR)
     source->modelVar = NULL;
-# endif
     source->maskObj = NULL;
     source->maskView = NULL;
@@ -122,7 +116,5 @@
     source->pixels = NULL;
     source->variance = NULL;
-# if (HAVE_MODEL_VAR)
     source->modelVar = NULL;
-# endif
     source->maskObj = NULL;
     source->maskView = NULL;
@@ -212,7 +204,5 @@
     source->pixels   = in->pixels   ? psImageCopyView(NULL, in->pixels)   : NULL;
     source->variance = in->variance ? psImageCopyView(NULL, in->variance) : NULL;
-# if (HAVE_MODEL_VAR)
     source->modelVar = NULL;
-# endif
     source->maskView = in->maskView ? psImageCopyView(NULL, in->maskView) : NULL;
 
@@ -1044,8 +1034,6 @@
     bool addNoise = mode & PM_MODEL_OP_NOISE;
 
-# if (HAVE_MODEL_VAR)
     bool addModelVar = mode & PM_MODEL_OP_MODELVAR;
     if (addModelVar) psAssert (source->modelVar, "programming error");
-# endif
 
     // require the use of pmModelAddWithOffset if we are adding noise (because the model size and norm are rescaled)
@@ -1070,9 +1058,6 @@
         }
 
-# if (HAVE_MODEL_VAR)
-        psF32 **target = addModelVar ? source->modelVar->data.F32 : source->pixels->data.F32;
-# else
-        psF32 **target = source->pixels->data.F32;
-# endif
+	psF32 **target = NULL;
+	target = addModelVar ? source->modelVar->data.F32 : source->pixels->data.F32;
 
         for (int iy = 0; iy < source->modelFlux->numRows; iy++) {
@@ -1089,19 +1074,12 @@
             }
         }
-# if (HAVE_MODEL_VAR)
+	// do not change the flag here if we are adding/subtracting from modelVar
 	if (!addModelVar) {
-	    if (add) {
-		source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
-	    } else {
-		source->tmpFlags |= PM_SOURCE_TMPF_SUBTRACTED;
-	    }
+	  if (add) {
+	    source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
+	  } else {
+	    source->tmpFlags |= PM_SOURCE_TMPF_SUBTRACTED;
+	  }
 	}
-# else
-	if (add) {
-	    source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
-	} else {
-	    source->tmpFlags |= PM_SOURCE_TMPF_SUBTRACTED;
-	}
-# endif
         return true;
     }
@@ -1111,24 +1089,17 @@
         target = source->variance;
     }
-# if (HAVE_MODEL_VAR)
     if (addModelVar) {
-        target = source->modelVar;
-    }
-# endif
+      target = source->modelVar;
+    }
 
     if (add) {
 	status = pmModelAddWithOffset (target, source->maskObj, model, PM_MODEL_OP_FULL, maskVal, dx, dy);
-# if (HAVE_MODEL_VAR)
 	if (!addNoise && !addModelVar) source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
-# else
-	source->tmpFlags &= ~PM_SOURCE_TMPF_SUBTRACTED;
-# endif
     } else {
 	status = pmModelSubWithOffset (target, source->maskObj, model, PM_MODEL_OP_FULL, maskVal, dx, dy);
-# if (HAVE_MODEL_VAR)
 	if (!addNoise && !addModelVar) source->tmpFlags |= PM_SOURCE_TMPF_SUBTRACTED;
-# else
-	source->tmpFlags |= PM_SOURCE_TMPF_SUBTRACTED;
-# endif
+    }
+    if (!status) {
+	// XXX maybe raise an error or warning?
     }
 
@@ -1200,4 +1171,7 @@
 	status = pmModelSubWithOffset (target, source->maskObj, model, mode, maskVal, dx, dy);
     }
+    if (!status) {
+	// XXX raise an error or warning?
+    }
 
     // restore original values
@@ -1287,4 +1261,7 @@
     } else {
 	status = pmModelSubWithOffset (target, source->maskObj, model, mode, maskVal, dx, dy);
+    }
+    if (!status) {
+	// XXX raise an error or warning?
     }
 
