Index: branches/eam_branches/20090715/psphot/src/psphotRadiusChecks.c
===================================================================
--- branches/eam_branches/20090715/psphot/src/psphotRadiusChecks.c	(revision 25616)
+++ branches/eam_branches/20090715/psphot/src/psphotRadiusChecks.c	(revision 25617)
@@ -7,4 +7,7 @@
 					// and a per-object radius is calculated)
 
+static float PSF_APERTURE = 0;	// radius to use in PSF aperture mags
+
+
 bool psphotInitRadiusPSF(const psMetadata *recipe, const pmModelType type) {
 
@@ -13,5 +16,6 @@
     PSF_FIT_NSIGMA  = psMetadataLookupF32(&status, recipe, "PSF_FIT_NSIGMA");
     PSF_FIT_PADDING = psMetadataLookupF32(&status, recipe, "PSF_FIT_PADDING");
-    PSF_FIT_RADIUS =  psMetadataLookupF32(&status, recipe, "PSF_FIT_RADIUS");
+    PSF_FIT_RADIUS  =  psMetadataLookupF32(&status, recipe, "PSF_FIT_RADIUS");
+    PSF_APERTURE    =  psMetadataLookupF32(&status, recipe, "PSF_APERTURE");
 
     return true;
@@ -34,7 +38,8 @@
 	    radiusFit = model->modelRadius(model->params, 1.0);
 	}
+	model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING);
+    } else {
+	model->fitRadius = radiusFit;
     }
-    model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING);
-
     if (isnan(model->fitRadius)) psAbort("error in radius");
 	
@@ -43,8 +48,6 @@
     }
 
-    source->apRadius = model->fitRadius;
-    // XXX for now, use the same radius for aperture and fit
-    // XXX to use different radii, we will need to set the apRadius mask with a call to
-    // psImageKeepCircle in the function psphotMagnitudes_Threaded 
+    // radius used to measure aperture photometry
+    source->apRadius = PSF_APERTURE;
 
     bool status = pmSourceRedefinePixels (source, readout, PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], model->fitRadius);
@@ -63,15 +66,26 @@
 
     // set the fit radius based on the object flux limit and the model
-    model->fitRadius = (RADIUS_TYPE) (model->modelRadius (model->params, PSF_FIT_NSIGMA*moments->dSky) + dR + PSF_FIT_PADDING);
+    float radiusFit = PSF_FIT_RADIUS;
+    if (radiusFit <= 0) {		// use fixed radius
+	if (moments == NULL) {
+	    radiusFit = model->modelRadius(model->params, PSF_FIT_NSIGMA*moments->dSky);
+	} else {
+	    radiusFit = model->modelRadius(model->params, 1.0);
+	}
+	model->fitRadius = (RADIUS_TYPE)(radiusFit + PSF_FIT_PADDING);
+    } else {
+	model->fitRadius = radiusFit;
+    }
     if (isnan(model->fitRadius)) psAbort("error in radius");
-	
+
+    // above sets a radius for a single star, bump by blend separation
+    model->fitRadius += dR;
+
     if (source->mode &  PM_SOURCE_MODE_SATSTAR) {
 	model->fitRadius *= 2;
     }
 
-    source->apRadius = model->fitRadius;
-    // XXX for now, use the same radius for aperture and fit
-    // XXX to use different radii, we will need to set the apRadius mask with a call to
-    // psImageKeepCircle in the function psphotMagnitudes_Threaded 
+    // radius used to measure aperture photometry
+    source->apRadius = PSF_APERTURE;
 
     bool status = pmSourceRedefinePixels (source, readout, PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], model->fitRadius);
