Index: trunk/psModules/src/camera/pmReadoutFake.c
===================================================================
--- trunk/psModules/src/camera/pmReadoutFake.c	(revision 23955)
+++ trunk/psModules/src/camera/pmReadoutFake.c	(revision 23960)
@@ -82,21 +82,4 @@
 
     int numSources = sources->n;          // Number of stars
-
-    float flux0 = NAN;                  // Flux for central intensity of 1.0
-    if (normalisePeak) {
-        pmModel *fakeModel = pmModelFromPSFforXY(psf, (float)numCols / 2.0, (float)numRows / 2.0,
-                                                 1.0); // Fake model, with central intensity of 1.0
-        psAssert(fakeModel, "failed to generate model: should this be an error or not?");
-
-        if (circularise && !circulariseModel(fakeModel)) {
-            psError(PS_ERR_UNKNOWN, false, "Unable to circularise PSF model.");
-            psFree(fakeModel);
-            return false;
-        }
-
-        flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
-        psFree(fakeModel);
-    }
-
     for (int i = 0; i < numSources; i++) {
         pmSource *source = sources->data[i]; // Source of interest
@@ -120,6 +103,20 @@
 
         float flux = powf(10.0, -0.4 * source->psfMag); // Flux of source
+
         if (normalisePeak) {
-            flux /= flux0;
+            // Normalise flux
+            pmModel *normModel = pmModelFromPSFforXY(psf, x, y, 1.0); // Model for normalisation
+            if (!normModel || (normModel->flags & MODEL_MASK)) {
+                psFree(normModel);
+                continue;
+            }
+            if (circularise && !circulariseModel(normModel)) {
+                psError(PS_ERR_UNKNOWN, false, "Unable to circularise PSF model.");
+                psFree(normModel);
+                return false;
+            }
+
+            flux /= normModel->modelFlux(normModel->params);
+            psFree(normModel);
         }
 
