Index: trunk/psphot/src/psphotImageMedian.c
===================================================================
--- trunk/psphot/src/psphotImageMedian.c	(revision 10801)
+++ trunk/psphot/src/psphotImageMedian.c	(revision 11171)
@@ -40,5 +40,5 @@
     }
     psStatsOptions statsOption = psStatsOptionFromString (statsName);
-    if (!(statsOption & (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_MEDIAN | PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_QUARTILE | PS_STAT_CLIPPED_MEAN | PS_STAT_FITTED_MEAN | PS_STAT_FITTED_MEAN_V2))) {
+    if (!(statsOption & (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_MEDIAN | PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_QUARTILE | PS_STAT_CLIPPED_MEAN | PS_STAT_FITTED_MEAN | PS_STAT_FITTED_MEAN_V2 | PS_STAT_FITTED_MEAN_V3))) {
 	statsOption = PS_STAT_FITTED_MEAN;
     }
@@ -104,4 +104,5 @@
     }
     psF32 **modelData = model->image->data.F32;
+
     assert(model->analysis != NULL);
     psMetadataAdd(model->analysis, PS_LIST_TAIL, "XBIN", PS_DATA_S32 | PS_META_REPLACE,
@@ -164,4 +165,5 @@
 
     // patch over bad regions (use average of 8 possible neighbor pixels)
+    // XXX consider testing pixels against the 8 neighbors and replacing outliers...
     float Count = 0;
     float Value = 0;
@@ -199,4 +201,5 @@
 	}
     }
+
     psLogMsg ("psphot", PS_LOG_MINUTIA, "build median image: %f sec\n", psTimerMark ("psphot"));
 
@@ -218,5 +221,9 @@
     if (file) {
 	// we are using PSPHOT.BACKGND as an I/O file: select readout or create
-	background = pmFPAviewThisReadout (view, file->fpa);
+	if (file->mode == PM_FPA_MODE_INTERNAL) {
+	    background = file->readout;
+	} else {
+	    background = pmFPAviewThisReadout (view, file->fpa);
+	}
 	if (background == NULL) {
 	    // readout does not yet exist: create from input
