Index: trunk/psphot/src/psphot.h
===================================================================
--- trunk/psphot/src/psphot.h	(revision 17870)
+++ trunk/psphot/src/psphot.h	(revision 17954)
@@ -12,4 +12,7 @@
 
 #define PSPHOT_RECIPE "PSPHOT" // Name of the recipe to use
+
+#define PSPHOT_RECIPE_PSF_FAKE_ALLOW "PSF.FAKE.ALLOW" // Name for recipe component permitting fake PSFs
+
 
 // top-level psphot functions
@@ -126,8 +129,8 @@
 
 bool            psphotRadialProfile (pmSource *source, psMetadata *recipe, psMaskType maskVal);
-bool 		psphotPetrosian (pmSource *source, psMetadata *recipe, psMaskType maskVal);
-bool 		psphotIsophotal (pmSource *source, psMetadata *recipe, psMaskType maskVal);
-bool 		psphotAnnuli (pmSource *source, psMetadata *recipe, psMaskType maskVal);
-bool 		psphotKron (pmSource *source, psMetadata *recipe, psMaskType maskVal);
+bool            psphotPetrosian (pmSource *source, psMetadata *recipe, psMaskType maskVal);
+bool            psphotIsophotal (pmSource *source, psMetadata *recipe, psMaskType maskVal);
+bool            psphotAnnuli (pmSource *source, psMetadata *recipe, psMaskType maskVal);
+bool            psphotKron (pmSource *source, psMetadata *recipe, psMaskType maskVal);
 
 // structures & functions to support psf-convolved model fitting
Index: trunk/psphot/src/psphotChoosePSF.c
===================================================================
--- trunk/psphot/src/psphotChoosePSF.c	(revision 17870)
+++ trunk/psphot/src/psphotChoosePSF.c	(revision 17954)
@@ -106,8 +106,11 @@
     // generate a psf model using the first selection
     if (stars->n == 0) {
-        // XXX optionally give up here
         psError(PSPHOT_ERR_PSF, false, "Failed to fit any models when choosing PSF");
-        psErrorStackPrint (stderr, "Using guess PSF model");
-        psErrorClear ();
+        bool mdok;                      // Status of MD lookup
+        if (!psMetadataLookupBool(&mdok, recipe, PSPHOT_RECIPE_PSF_FAKE_ALLOW)) {
+            return false;
+        }
+        psErrorStackPrint(stderr, "Using guess PSF model");
+        psErrorClear();
 
         psFree(options);
@@ -175,11 +178,12 @@
         psFree (stars);
 
-        // XXX optionally give up here
-	// test for PSPHOT.recipe & return false on failure.
-
+        psError(PSPHOT_ERR_PSF, false, "Failed to fit any models when choosing PSF");
+        bool mdok;                      // Status of MD lookup
+        if (!psMetadataLookupBool(&mdok, recipe, PSPHOT_RECIPE_PSF_FAKE_ALLOW)) {
+            return false;
+        }
         // generate a psf model using the first selection
-        psError(PSPHOT_ERR_PSF, false, "Failed to fit any models when choosing PSF");
         psErrorStackPrint (stderr, "Using guess PSF model");
-        psErrorClear ();
+        psErrorClear();
 
         psFree(options);
