Index: trunk/psModules/src/objects/pmSource.c
===================================================================
--- trunk/psModules/src/objects/pmSource.c	(revision 29620)
+++ trunk/psModules/src/objects/pmSource.c	(revision 29935)
@@ -189,6 +189,6 @@
     // pixels.  Modifying these pixels (ie, subtracting the model) will affect the pixels seen
     // by all copies.
-    source->pixels   = psImageCopyView(NULL, in->pixels);
-    source->variance   = psImageCopyView(NULL, in->variance);
+    source->pixels   = in->pixels   ? psImageCopyView(NULL, in->pixels)   : NULL;
+    source->variance = in->variance ? psImageCopyView(NULL, in->variance) : NULL;
     source->maskView = in->maskView ? psImageCopyView(NULL, in->maskView) : NULL;
 
Index: trunk/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 29620)
+++ trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 29935)
@@ -107,5 +107,5 @@
     // XXX handle negative flux, low-significance
     if (model->dparams->data.F32[PM_PAR_I0] > 0) {
-        SN = model->params->data.F32[PM_PAR_I0] / model->dparams->data.F32[PM_PAR_I0];
+        SN = fabs(model->params->data.F32[PM_PAR_I0] / model->dparams->data.F32[PM_PAR_I0]);
         source->errMag = 1.0 / SN;
     } else {
@@ -331,5 +331,5 @@
     }
     if (apFluxOut) *apFluxOut = apFlux;
-    if (apFluxErr) *apFluxErr = sqrt(apFluxVar);
+    if (apFluxErr) *apFluxErr = sqrt(fabs(apFluxVar));
 
     if (apFlux <= 0) {
