Index: /branches/czw_branch/20120906/ippScripts/scripts/stack_skycell.pl
===================================================================
--- /branches/czw_branch/20120906/ippScripts/scripts/stack_skycell.pl	(revision 34530)
+++ /branches/czw_branch/20120906/ippScripts/scripts/stack_skycell.pl	(revision 34531)
@@ -229,4 +229,6 @@
     my $sources = $ipprc->filename("PSWARP.OUTPUT.SOURCES", $file->{path_base}); # Sources name
 
+    my $bkgmodel = $ipprc->filename("PSWARP.OUTPUT.BKGMODEL", $file->{path_base});
+
     &my_die("Image $image does not exist", $stack_id, $PS_EXIT_SYS_ERROR) unless $ipprc->file_exists( $image );
     &my_die("Mask $mask does not exist", $stack_id, $PS_EXIT_SYS_ERROR) unless $ipprc->file_exists( $mask );
@@ -240,4 +242,5 @@
     print $listFile "\tPSF\tSTR\t" . $psf . "\n" if $convolve;
     print $listFile "\tSOURCES\tSTR\t" . $sources . "\n";
+    print $listFile "\tBKGMODEL\tSTR\t" . $bkgmodel . "\n" if $ipprc->file_exists( $bkgmodel );
 
     print $listFile "END\n\n";
Index: /branches/czw_branch/20120906/ippconfig/gpc1/pswarp.config
===================================================================
--- /branches/czw_branch/20120906/ippconfig/gpc1/pswarp.config	(revision 34530)
+++ /branches/czw_branch/20120906/ippconfig/gpc1/pswarp.config	(revision 34531)
@@ -1,1 +1,4 @@
 ASTROM.SOURCE		STR	PSASTRO.OUTPUT	# Source file rule for astrometry, or NULL
+BACKGROUND.MODEL	BOOL	TRUE
+BKG.XGRID		S32	50
+BKG.YGRID		S32	50
Index: /branches/czw_branch/20120906/ippconfig/recipes/filerules-mef.mdc
===================================================================
--- /branches/czw_branch/20120906/ippconfig/recipes/filerules-mef.mdc	(revision 34530)
+++ /branches/czw_branch/20120906/ippconfig/recipes/filerules-mef.mdc	(revision 34531)
@@ -125,4 +125,5 @@
 PPSTACK.INPUT.PSF       INPUT    @FILES        CHIP       PSF
 PPSTACK.INPUT.SOURCES   INPUT    @FILES        FPA        CMF
+PPSTACK.INPUT.BKGMODEL	  INPUT	   @FILES	 FPA	    IMAGE
 
 ## files used by ppstamp
@@ -311,4 +312,6 @@
 PPSTACK.OUTPUT.JPEG1    OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPSTACK.OUTPUT.JPEG2    OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
+PPSTACK.OUTPUT.BKGMODEL OUTPUT {OUTPUT}.mdl.fits		 IMAGE	   NONE	      FPA	 TRUE      NONE
+PPSTACK.OUTPUT.BKGREST  OUTPUT {OUTPUT}.bkgrest.fits		 IMAGE	   	  NONE	     FPA	TRUE      NONE
 PPSTACK.CONFIG          OUTPUT {OUTPUT}.ppStack.mdc              TEXT      NONE       FPA        TRUE      NONE
                                                                                      
Index: /branches/czw_branch/20120906/ippconfig/recipes/filerules-simple.mdc
===================================================================
--- /branches/czw_branch/20120906/ippconfig/recipes/filerules-simple.mdc	(revision 34530)
+++ /branches/czw_branch/20120906/ippconfig/recipes/filerules-simple.mdc	(revision 34531)
@@ -107,4 +107,5 @@
 PPSTACK.INPUT.PSF         INPUT    @FILES        CHIP       PSF
 PPSTACK.INPUT.SOURCES     INPUT    @FILES        FPA        CMF
+PPSTACK.INPUT.BKGMODEL	  INPUT	   @FILES	 FPA	    IMAGE
 
 ## files used by ppstamp
@@ -291,4 +292,6 @@
 PPSTACK.OUTPUT.JPEG1         OUTPUT {OUTPUT}.b1.jpg               JPEG            NONE       FPA        TRUE      NONE
 PPSTACK.OUTPUT.JPEG2         OUTPUT {OUTPUT}.b2.jpg               JPEG            NONE       FPA        TRUE      NONE
+PPSTACK.OUTPUT.BKGMODEL      OUTPUT {OUTPUT}.mdl.fits		  IMAGE	   	  NONE	     FPA	TRUE      NONE
+PPSTACK.OUTPUT.BKGREST       OUTPUT {OUTPUT}.bkgrest.fits	  IMAGE	   	  NONE       FPA	TRUE      NONE
 PPSTACK.CONFIG               OUTPUT {OUTPUT}.ppStack.mdc          TEXT            NONE       FPA        TRUE      NONE
                                              
Index: /branches/czw_branch/20120906/ippconfig/recipes/filerules-split.mdc
===================================================================
--- /branches/czw_branch/20120906/ippconfig/recipes/filerules-split.mdc	(revision 34530)
+++ /branches/czw_branch/20120906/ippconfig/recipes/filerules-split.mdc	(revision 34531)
@@ -127,4 +127,5 @@
 PPSTACK.INPUT.PSF         INPUT    @FILES        CHIP       PSF
 PPSTACK.INPUT.SOURCES     INPUT    @FILES        FPA        CMF
+PPSTACK.INPUT.BKGMODEL	  INPUT	   @FILES	 FPA	    IMAGE
                           
 ## files used by ppstamp  
@@ -324,4 +325,6 @@
 PPSTACK.OUTPUT.JPEG1         OUTPUT {OUTPUT}.b1.jpg                   JPEG            NONE       FPA        TRUE      NONE
 PPSTACK.OUTPUT.JPEG2         OUTPUT {OUTPUT}.b2.jpg                   JPEG            NONE       FPA        TRUE      NONE
+PPSTACK.OUTPUT.BKGMODEL      OUTPUT {OUTPUT}.mdl.fits		      IMAGE	      NONE	 FPA	    TRUE      NONE
+PPSTACK.OUTPUT.BKGREST       OUTPUT {OUTPUT}.bkgrest.fits	      IMAGE	      NONE	 FPA	    TRUE      NONE
 PPSTACK.CONFIG               OUTPUT {OUTPUT}.ppStack.mdc              TEXT            NONE       FPA        TRUE      NONE
 
Index: /branches/czw_branch/20120906/ppStack/src/ppStackCombineFinal.c
===================================================================
--- /branches/czw_branch/20120906/ppStack/src/ppStackCombineFinal.c	(revision 34530)
+++ /branches/czw_branch/20120906/ppStack/src/ppStackCombineFinal.c	(revision 34531)
@@ -15,5 +15,4 @@
   
   psArray *inputs  = psArrayAlloc(options->num);
-  //  const psArray *cells = options->cells;
   for (int i = 0; i < options->num; i++) {
     ppStackFileActivationSingle(config, PPSTACK_FILES_BKG, true, i);
@@ -23,5 +22,4 @@
     inputs->data[i] = ro;
     pmFPAfileClose(file,view);
-    ppStackFileActivationSingle(config, PPSTACK_FILES_BKG, false, i);
   }
   if (!pmStackSimpleMedianCombine(bkgRO,inputs)) {
@@ -29,15 +27,30 @@
     return(false);
   }
-/*   for (int i = 0; i < options->num; i++) { */
-/*     //    ppStackFilesIterateUp(config); */
-/* /\*     pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT.BKGMODEL", i); *\/ */
-/* /\*     pmFPAview *view = ppStackFilesIterateDown(config); *\/ */
-/*     pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT.BKGMODEL", i); */
-    
-/*     ppStackFileActivationSingle(config, PPSTACK_FILES_BKG, false, i); */
-/*   }   */
+  if (!ppStackWriteImage("/tmp/test_forced.bkgmdl.fits",
+			 bkgRO->parent->parent->parent->hdu->header,
+			 bkgRO->image,
+			 config)) {
+    fprintf(stderr,"Failed to write image because fail.\n");
+  }
+  
+  for (int i = 0; i < options->num; i++) {
+    pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT.BKGMODEL", i);
+    pmFPAview *view = ppStackFilesIterateDown(config);
+    bool success = pmFPAfileClose(file,view);
+    if (!success) {
+      psTrace("ppStack",5,"I failed at closing a file.\n");
+    }
+	      
+    psFitsClose(file->fits);
+    file->fits = NULL;
+    file->header = NULL;
+    file->state = PM_FPA_STATE_CLOSED;
+    file->wrote_phu = false;
+    ppStackFileActivationSingle(config, PPSTACK_FILES_BKG, false, i);
+  }
   psFree(inputs);
-  //  psFree(stack->bkgFits);
   bkgRO->data_exists = true;
+  bkgRO->parent->data_exists = true;
+  bkgRO->parent->parent->data_exists = true;
   return(true);
 }
Index: /branches/czw_branch/20120906/ppStack/src/ppStackCombinePrepare.c
===================================================================
--- /branches/czw_branch/20120906/ppStack/src/ppStackCombinePrepare.c	(revision 34530)
+++ /branches/czw_branch/20120906/ppStack/src/ppStackCombinePrepare.c	(revision 34531)
@@ -31,7 +31,33 @@
 
     pmCell *bkgCell;
+    int bkg_r0,bkg_c0;
+    int bkg_nC,bkg_nR;
     if (bkgName) {
+      ppStackFileActivationSingle(config, PPSTACK_FILES_BKG, true, 0);
+      pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT.BKGMODEL", 0);
+      pmFPAview *view = ppStackFilesIterateDown(config);
+      pmReadout *ro = pmFPAviewThisReadout(view,file->fpa);
+
+      bkg_r0 = ro->image->row0;
+      bkg_c0 = ro->image->col0;
+      bkg_nC = ro->image->numCols;
+      bkg_nR = ro->image->numRows;
       bkgCell = pmFPAfileThisCell(config->files, view, bkgName); // Bkg cell
+      
       options->bkgRO = pmReadoutAlloc(bkgCell); // BKG readout
+      //      if (!pmHDUGenerateForFPA(options->bkgRO->parent->parent->parent)) {
+      options->bkgRO->parent->parent->parent->hdu = pmHDUAlloc(NULL);
+      if (!options->bkgRO->parent->parent->parent->hdu) {
+	fprintf(stderr,"failed to generate a HDU for this thing.\n");
+      }
+      options->bkgRO->parent->parent->parent->hdu->header = psMetadataCopy(options->bkgRO->parent->parent->parent->hdu->header,
+									   ro->parent->parent->parent->hdu->header);
+
+      options->bkgRO->parent->concepts = psMetadataCopy(options->bkgRO->parent->concepts,
+							ro->parent->concepts);
+      options->bkgRO->parent->parent->concepts = psMetadataCopy(options->bkgRO->parent->parent->concepts,
+								ro->parent->parent->concepts);
+      options->bkgRO->parent->parent->parent->concepts = psMetadataCopy(options->bkgRO->parent->parent->parent->concepts,
+									ro->parent->parent->parent->concepts);
     }
 
@@ -54,5 +80,5 @@
 
     if (bkgName) {
-      if (!pmReadoutStackDefineOutput(options->bkgRO, col0, row0, numCols, numRows, false, false, 0)) {
+      if (!pmReadoutStackDefineOutput(options->bkgRO, bkg_c0, bkg_r0, bkg_nC, bkg_nR, false, false, 0)) {
         psError(PPSTACK_ERR_ARGUMENTS, false, "Unable to prepare output.");
         return false;
Index: /branches/czw_branch/20120906/ppStack/src/ppStackFiles.c
===================================================================
--- /branches/czw_branch/20120906/ppStack/src/ppStackFiles.c	(revision 34530)
+++ /branches/czw_branch/20120906/ppStack/src/ppStackFiles.c	(revision 34531)
@@ -92,5 +92,4 @@
     for (int i = 0; files[i] != NULL; i++) {
         pmFPAfileActivate(config->files, state, files[i]);
-	fprintf(stderr,"ACTIVE: %d %s %d\n",i,files[i],state);
     }
     return;
