Index: /trunk/psphot/src/psphot.h
===================================================================
--- /trunk/psphot/src/psphot.h	(revision 13373)
+++ /trunk/psphot/src/psphot.h	(revision 13374)
@@ -33,5 +33,5 @@
                                 const psMetadata *recipe, psArray *footprints);
 psArray        *psphotSourceStats (pmReadout *readout, psMetadata *recipe, psArray *allpeaks);
-bool            psphotRoughClass (psArray *sources, psMetadata *recipe);
+bool            psphotRoughClass (psArray *sources, psMetadata *recipe, const bool findPsfClump);
 bool            psphotBasicDeblend (psArray *sources, psMetadata *recipe);
 pmPSF          *psphotChoosePSF (pmReadout *readout, psArray *sources, psMetadata *recipe);
Index: /trunk/psphot/src/psphotReadout.c
===================================================================
--- /trunk/psphot/src/psphotReadout.c	(revision 13373)
+++ /trunk/psphot/src/psphotReadout.c	(revision 13374)
@@ -104,5 +104,5 @@
 
     // classify sources based on moments, brightness
-    if (!psphotRoughClass (sources, recipe)) {
+    if (!psphotRoughClass (sources, recipe, true)) {
         psLogMsg ("psphot", 3, "failed to find a valid PSF clump for image");
         return psphotReadoutCleanup (config, readout, recipe, NULL, sources);
@@ -201,5 +201,5 @@
 
     // set source type
-    psphotRoughClass (newSources, recipe);
+    psphotRoughClass (newSources, recipe, false);
 
     // create full input models
Index: /trunk/psphot/src/psphotRoughClass.c
===================================================================
--- /trunk/psphot/src/psphotRoughClass.c	(revision 13373)
+++ /trunk/psphot/src/psphotRoughClass.c	(revision 13374)
@@ -2,11 +2,20 @@
 
 // 2006.02.02 : no leaks
-bool psphotRoughClass (psArray *sources, psMetadata *recipe) {
+bool psphotRoughClass (psArray *sources, psMetadata *recipe, const bool findPsfClump) {
 
-    pmPSFClump   psfClump;
+    static pmPSFClump   psfClump;
+    static bool havePsfClump = false;
 
     psTimerStart ("psphot");
 
-    psfClump = pmSourcePSFClump (sources, recipe);
+    if (findPsfClump) {
+	psfClump = pmSourcePSFClump (sources, recipe);
+    } else if (!havePsfClump) {
+	psError(PSPHOT_ERR_PROG, false, "You must find the PSF clump before reusing it");
+    } else {
+	;
+    }
+    
+    havePsfClump = false;		// we don't know if it's valid
     if (psfClump.X < 0) {
 	psError(PSPHOT_ERR_PROG, false, "programming error calling pmSourcePSFClump");
@@ -31,4 +40,6 @@
     psLogMsg ("psphot.roughclass", PS_LOG_INFO, "rough classification: %f sec\n", psTimerMark ("psphot"));
 
+    havePsfClump = true;			// we have set psfClump
+    
     return true;
 }
