Index: trunk/ppSub/src/ppSubMakePSF.c
===================================================================
--- trunk/ppSub/src/ppSubMakePSF.c	(revision 27758)
+++ trunk/ppSub/src/ppSubMakePSF.c	(revision 27759)
@@ -121,6 +121,6 @@
 }
 
-bool ppSubCopyPSF (pmFPAfile *output, pmFPAfile *input, pmFPAview *view) {
-
+bool ppSubCopyPSF(pmFPAfile *output, pmFPAfile *input, pmFPAview *view)
+{
     bool mdok = false;
 
@@ -134,31 +134,14 @@
         pmCell *outputCell  = pmFPAviewThisCell(view, output->fpa);
         outputRO = pmReadoutAlloc(outputCell);
-        outputRO->image = psMemIncrRefCounter (inputRO->image);
+        outputRO->image = psMemIncrRefCounter(inputRO->image);
     }
 
-    // copy the PSF-related data to PSPHOT.PSF.LOAD for safe-keeping
-    psMetadata *psfRegions = psMetadataAlloc();
-
-    int nRegions = psMetadataLookupS32 (&mdok, inputRO->analysis, "PSF.CLUMP.NREGIONS");
-    if (!nRegions) {
-        psErrorStackPrint(stderr, "No PSF available");
-        return false;
+    // Copy the PSF-related data
+    psMetadataIterator *iter = psMetadataIteratorAlloc(inputRO->analysis, PS_LIST_HEAD, "^PSF\\.CLUMP.*");
+    psMetadataItem *item;               // Item from iteration
+    while ((item = psMetadataGetAndIncrement(iter))) {
+        psMetadataAddItem(outputRO->analysis, item, PS_LIST_TAIL, PS_META_REPLACE);
     }
-    psMetadataAddS32 (psfRegions, PS_LIST_TAIL, "PSF.CLUMP.NREGIONS",  PS_META_REPLACE, "psf clump regions", nRegions);
-
-    for (int i = 0; i < nRegions; i++) {
-        char fieldName[80];
-        snprintf (fieldName, 80, "PSF.CLUMP.REGION.%03d", i);
-        psMetadata *regionMD = psMetadataLookupPtr (&mdok, inputRO->analysis, fieldName);
-        if (!regionMD) {
-            psWarning ("missing psf clump region metadata for entry %d", i);
-            continue;
-        }
-        psMetadataAddMetadata (psfRegions, PS_LIST_TAIL, fieldName, PS_META_REPLACE, "psf clump region", regionMD);
-    }
-
-    // XXX why am I replacing the entire analysis MD?
-    psFree(outputRO->analysis);
-    outputRO->analysis = psfRegions;
+    psFree(iter);
 
     // copy the PSF model data
@@ -169,5 +152,6 @@
     }
 
-    psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE, "PSF from ppSubMakePSF", psf);
+    psMetadataAddPtr(outputChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE,
+                     "PSF from ppSubMakePSF", psf);
 
     return true;
