Index: trunk/ppStack/src/ppStackSources.c
===================================================================
--- trunk/ppStack/src/ppStackSources.c	(revision 21183)
+++ trunk/ppStack/src/ppStackSources.c	(revision 21199)
@@ -9,4 +9,7 @@
 //#define TESTING                         // Enable debugging output
 
+// Size of fake image; set by hand because it's trouble to get it from other places
+#define FAKE_COLS 4861
+#define FAKE_ROWS 4913
 
 float ppStackSourcesTransparency(const psArray *sourceLists, const pmFPAview *view, const pmConfig *config)
@@ -60,4 +63,18 @@
         pmCell *cell = pmFPAviewThisCell(view, file->fpa); // Cell of interest
 
+#ifdef TESTING
+        pmReadout *fake = pmReadoutAlloc(NULL); // Fake readout
+        pmPSF *psf = psMetadataLookupPtr(NULL, config->arguments, "PSF.TARGET"); // PSF for fake image
+        pmReadoutFakeFromSources(fake, FAKE_COLS, FAKE_ROWS, sourceLists->data[i], NULL, NULL, psf, 5, 0, false, true);
+        psString name = NULL;
+        psStringAppend(&name, "start_%03d.fits", i);
+        psFits *fits = psFitsOpen(name, "w");
+        psFree(name);
+        psFitsWriteImage(fits, NULL, fake->image, 0, NULL);
+        psFitsClose(fits);
+        psFree(fake);
+#endif
+
+
         float exptime = psMetadataLookupF32(NULL, cell->concepts, "CELL.EXPOSURE"); // Exposure time
         float airmass = psMetadataLookupF32(NULL, file->fpa->concepts, "FPA.AIRMASS"); // Airmass
@@ -105,7 +122,9 @@
         FILE *outMatches = fopen("source_match.dat", "w"); // Output matches
         psVector *mag = psVectorAlloc(num, PS_TYPE_F32); // Magnitudes for each star
+        psVector *magErr = psVectorAlloc(num, PS_TYPE_F32); // Errors for each star
         for (int i = 0; i < matches->n; i++) {
             pmSourceMatch *match = matches->data[i]; // Match of interest
             psVectorInit(mag, NAN);
+            psVectorInit(magErr, NAN);
             for (int j = 0; j < match->num; j++) {
                 if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) {
@@ -114,11 +133,13 @@
                 int index = match->image->data.U32[j]; // Image index
                 mag->data.F32[index] = match->mag->data.F32[j] - zp->data.F32[index] - trans->data.F32[index];
+                magErr->data.F32[index] = match->magErr->data.F32[j];
             }
             for (int j = 0; j < num; j++) {
-                fprintf(outMatches, "%f ", mag->data.F32[j]);
+                fprintf(outMatches, "%f (%f) ", mag->data.F32[j], magErr->data.F32[j]);
             }
             fprintf(outMatches, "\n");
         }
         psFree(mag);
+        psFree(magErr);
         fclose(outMatches);
     }
@@ -162,4 +183,7 @@
         psVector *trans = pmSourceMatchRelphot(matches, zp, iter, tol, starLimit, transIter, transRej,
                                                transThresh, starRej, starSys);
+        for (int i = 0; i < num; i++) {
+            fprintf(stderr, "Transparency of image %d: %f\n", i, trans->data.F32[i]);
+        }
         psFree(trans);
     }
