Index: trunk/psphot/src/psphotApResid.c
===================================================================
--- trunk/psphot/src/psphotApResid.c	(revision 5828)
+++ trunk/psphot/src/psphotApResid.c	(revision 5837)
@@ -5,6 +5,6 @@
     int Npsf;
     bool status;
-    float x, y;
-    float fitMag, obsMag;
+    pmModel *model;
+    pmSource *source;
 
     // XXX EAM : check that PSF_FIT_RADIUS < SKY_OUTER_RADIUS
@@ -26,8 +26,6 @@
     // select the NNN brightest, non-saturated sources, or just select PSFSTARs?
     for (int i = 0; (i < sources->n) && (Npsf < 300); i++) {
-	pmSource *source = sources->data[i];
-	pmModel  *model  = source->modelPSF;
+	source = sources->data[i];
 
-	if (model == NULL) continue;
 	if (source->type != PM_SOURCE_STAR) continue; 
 	if (source->mode &  PM_SOURCE_SATSTAR) continue;
@@ -36,22 +34,13 @@
 	if (source->mode &  PM_SOURCE_POOR) continue;
 
-	// set shape for this model based on PSF
-	x = model->params->data.F32[2];
-	y = model->params->data.F32[3];
-
-	pmSourceAddModel (source->pixels, source->mask, model, false, false);
-
-	psImageKeepCircle (source->mask, x, y, RADIUS, "OR", PSPHOT_MASK_MARKED);
-	status = pmSourcePhotometry (&fitMag, &obsMag, model, source->pixels, source->mask);
-	psImageKeepCircle (source->mask, x, y, RADIUS, "AND", ~PSPHOT_MASK_MARKED);
-
-	pmSourceSubModel (source->pixels, source->mask, model, false, false);
-	if (!status) continue;
+	// get magnitudes, uncorrected for (x, y, rflux)
+	model = pmSourceMagnitudes (source, NULL, RADIUS);
+	if (model == NULL) continue;
 
 	mask->data.U8[Npsf] = 0;
-	xPos->data.F64[Npsf] = x;
-	yPos->data.F64[Npsf] = y;
-	rflux->data.F64[Npsf] = pow(10.0, 0.4*fitMag);
-	apResid->data.F64[Npsf] = obsMag - fitMag;
+	xPos->data.F64[Npsf] = model->params->data.F32[2];
+	yPos->data.F64[Npsf] = model->params->data.F32[3];
+	rflux->data.F64[Npsf] = pow(10.0, 0.4*source->fitMag);
+	apResid->data.F64[Npsf] = source->apMag - source->fitMag;
 
 	psVectorExtend (mask, 100, 1);
