Index: trunk/psphot/src/psphotFullForceSummaryReadout.c
===================================================================
--- trunk/psphot/src/psphotFullForceSummaryReadout.c	(revision 36757)
+++ trunk/psphot/src/psphotFullForceSummaryReadout.c	(revision 36759)
@@ -188,5 +188,6 @@
     int ID = source0->seq;
 
-    // Find the parameters from the cff tables
+    // Find the parameters from the cff tables. nModels is the number of extended model types that
+    // this source has an entry for
     int nModels = 0;
     // skip table 0 which is modelType -1 not extended
@@ -227,6 +228,26 @@
             }
         }
-        if (nModels && !outSrc->modelFits && source->modelFits && source->modelFits->n == nModels) {
-            outSrc->modelFits =  psMemIncrRefCounter(source->modelFits);
+        if (nModels && source->modelFits && source->modelFits->n) {
+            if (!outSrc->modelFits) {
+                outSrc->modelFits = psArrayAllocEmpty(nModels);
+            }
+            for (int iModel = 0; iModel < source->modelFits->n; iModel++) {
+                pmModel *newModel = source->modelFits->data[iModel];
+                pmModel *outModel = NULL;
+                for (int jModel = 0; jModel < outSrc->modelFits->n; jModel++) {
+                    outModel = outSrc->modelFits->data[jModel];
+                    if (newModel->type == outModel->type)  {
+                        // already have an entry for this type
+                        break;
+                    }
+                    outModel = NULL;
+                }
+                if (!outModel) {
+                    // no model of this type in output source yet. Add this one.
+                    // Note: the parameters that we need (position, angle, index, if applicable)
+                    // are the same for all sources so copying any of them is fine
+                    psArrayAdd(outSrc->modelFits, 1, newModel);
+                }
+            }
         }
     }
