Index: trunk/psModules/src/camera/pmReadoutFake.c
===================================================================
--- trunk/psModules/src/camera/pmReadoutFake.c	(revision 20963)
+++ trunk/psModules/src/camera/pmReadoutFake.c	(revision 20999)
@@ -50,5 +50,5 @@
 bool pmReadoutFakeFromSources(pmReadout *readout, int numCols, int numRows, const psArray *sources,
                               const psVector *xOffset, const psVector *yOffset, const pmPSF *psf,
-                              float minFlux, int radius, bool circularise)
+                              float minFlux, int radius, bool circularise, bool normalisePeak)
 {
     PS_ASSERT_PTR_NON_NULL(readout, false);
@@ -83,8 +83,10 @@
     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?");
+    psAssert(fakeModel, "failed to generate model: should this be an error or not?");
 
-
-    float flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
+    float flux0 = NAN;                  // Flux for central intensity of 1.0
+    if (normalisePeak) {
+        flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
+    }
 
     if (circularise && !circulariseModel(fakeModel)) {
@@ -112,5 +114,10 @@
         }
 
-        pmModel *fakeModel = pmModelFromPSFforXY(psf, x, y, powf(10.0, -0.4 * source->psfMag) / flux0);
+        float flux = powf(10.0, -0.4 * source->psfMag); // Flux of source
+        if (normalisePeak) {
+            flux /= flux0;
+        }
+
+        pmModel *fakeModel = pmModelFromPSFforXY(psf, x, y, flux);
         if (!fakeModel) {
             continue;
Index: trunk/psModules/src/camera/pmReadoutFake.h
===================================================================
--- trunk/psModules/src/camera/pmReadoutFake.h	(revision 20963)
+++ trunk/psModules/src/camera/pmReadoutFake.h	(revision 20999)
@@ -21,5 +21,6 @@
                               float minFlux, ///< Minimum flux to bother about; for setting source radius
                               int radius, ///< Fixed radius for sources
-                              bool circularise ///< Circularise PSF model?
+                              bool circularise, ///< Circularise PSF model?
+                              bool normalise ///< Normalise the peak value?
     );
 
Index: trunk/psModules/src/imcombine/pmPSFEnvelope.c
===================================================================
--- trunk/psModules/src/imcombine/pmPSFEnvelope.c	(revision 20963)
+++ trunk/psModules/src/imcombine/pmPSFEnvelope.c	(revision 20999)
@@ -118,5 +118,5 @@
         psf->residuals = NULL;
         if (!pmReadoutFakeFromSources(fakeRO, fakeSize, fakeSize, fakes, xOffset, yOffset, psf,
-                                      NAN, radius, true)) {
+                                      NAN, radius, true, true)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to generate fake readout.");
             psFree(envelope);
@@ -148,5 +148,5 @@
             // Get the radius
             pmModel *model = pmModelFromPSFforXY(psf, x, y, PEAK_FLUX); // Model for source
-	    psAssert (model, "failed to generate model: should this be an error or not?");
+            psAssert (model, "failed to generate model: should this be an error or not?");
             float srcRadius = model->modelRadius(model->params, PS_SQR(WEIGHT_VAL)); // Radius for source
             if (srcRadius > maxRadius) {
@@ -299,5 +299,5 @@
         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?");
+        psAssert (fakeModel, "failed to generate model: should this be an error or not?");
         float flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
         for (int i = 0; i < numFakes; i++) {
@@ -308,5 +308,5 @@
         pmReadout *generated = pmReadoutAlloc(NULL); // Generated image
         pmReadoutFakeFromSources(generated, numCols, numRows, fakes, NULL, NULL, psf, NAN, radius,
-                                 false);
+                                 false, true);
         {
             psFits *fits = psFitsOpen("psf_field_model.fits", "w");
