Index: /trunk/ppSkycell/src/ppSkycell.h
===================================================================
--- /trunk/ppSkycell/src/ppSkycell.h	(revision 36355)
+++ /trunk/ppSkycell/src/ppSkycell.h	(revision 36356)
@@ -17,5 +17,6 @@
     int bin1, bin2;                     // Binning factors
     pmConfig *config;                   // Configuration
-  bool doFits;                          // hold whether to do fits as well.
+    bool doFits;                        // hold whether to do fits as well.
+    int  exptimeOrder;                  // Order of exptime scaling.
 } ppSkycellData;
 
Index: /trunk/ppSkycell/src/ppSkycellArguments.c
===================================================================
--- /trunk/ppSkycell/src/ppSkycellArguments.c	(revision 36355)
+++ /trunk/ppSkycell/src/ppSkycellArguments.c	(revision 36356)
@@ -52,4 +52,5 @@
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-masks", 0, "Filename with input masks", NULL);
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-wcsref", 0, "Filename with WCS references", NULL);
+    psMetadataAddS16(arguments, PS_LIST_TAIL, "-exptimeOrder", 0, "Order of exptime scaling", 0);
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) {
         usage(argv[0], arguments, data);
@@ -59,4 +60,5 @@
     data->masksName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-masks"));
     data->wcsrefName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-wcsref"));
+    data->exptimeOrder = psMetadataLookupS16(NULL,arguments,"-exptimeOrder");
     
     data->outRoot = psStringCopy(argv[1]);
Index: /trunk/ppSkycell/src/ppSkycellData.c
===================================================================
--- /trunk/ppSkycell/src/ppSkycellData.c	(revision 36355)
+++ /trunk/ppSkycell/src/ppSkycellData.c	(revision 36356)
@@ -36,5 +36,5 @@
     data->bin2 = 0;
     data->config = NULL;
-
+    data->exptimeOrder = 0;
     return data;
 }
Index: /trunk/ppSkycell/src/ppSkycellLoop.c
===================================================================
--- /trunk/ppSkycell/src/ppSkycellLoop.c	(revision 36355)
+++ /trunk/ppSkycell/src/ppSkycellLoop.c	(revision 36356)
@@ -139,4 +139,7 @@
     psArray *imageRegions = psArrayAlloc(data->numInputs); // Region for image
     psArray *regionHDUs = psArrayAlloc(data->numInputs);
+
+    psVector *exptimes = psVectorAllocEmpty(data->numInputs, PS_TYPE_F64);
+    
     // Determine which projection cells we have to deal with.
     for (int i = 0; i < data->numInputs; i++) {
@@ -187,10 +190,11 @@
             }
         }
-
-        if (!found) {
+	
+        if (!found) { // Add new projection cell if we didn't find one.
             psVectorAppend(crval1, wcs->crval1);
             psVectorAppend(crval2, wcs->crval2);
             psVectorAppend(cdelt1, wcs->cdelt1);
             psVectorAppend(cdelt2, wcs->cdelt2);
+
             psRegion *projRegion = psRegionAlloc(region->x0, region->x1, region->y0, region->y1);
             psArrayAdd(projRegions, projRegions->n, projRegion);
@@ -200,7 +204,14 @@
 	    psArrayAdd(regionHDUs,1,hdu);
             numProj++;
+
         }
-    }
-
+
+	// Save exptime
+	exptimes->data.F64[i] = psMetadataLookupF64(NULL, hdu->header, "EXPTIME");
+    }
+
+    psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN);
+    psVectorStats(stats,exptimes,NULL, NULL, 0);
+    
     pmFPAfileActivate(data->config->files, false, NULL);
     // Loop over projections
@@ -304,4 +315,11 @@
             }
 
+	    // Scale by exposure time
+	    double exptime_factor = pow(exptimes->data.F64[j]/stats->robustMedian,data->exptimeOrder);
+	    psBinaryOp(bin1RO->image,bin1RO->image,"/",
+		       psScalarAlloc(exptime_factor,  PS_TYPE_F64));
+	    psBinaryOp(bin2RO->image,bin2RO->image,"/",
+		       psScalarAlloc(exptime_factor,  PS_TYPE_F32));
+	    // End scaling
 #if (0)
             psRegion *imageRegion = imageRegions->data[j]; // Region for image
@@ -321,4 +339,9 @@
 		    xOffset1,yOffset1,xOffset2,yOffset2);
 
+	    // This is where any primary code would go.  I'm unclear on how it would work.
+
+	    
+
+	    
 	    // Overlay the data onto the appropriate pixels in the final outputs
             // XXX Completely neglecting rotations
@@ -463,5 +486,5 @@
 	  psMetadataAddS32(Fcell1->concepts,PS_LIST_TAIL,"CELL.YPARITY", PS_META_REPLACE,"",1);
 	  psMetadataAddS32(Fcell1->concepts,PS_LIST_TAIL,"CELL.READDIR", PS_META_REPLACE,"",1);
-
+	  psMetadataAddF64(Fcell1->concepts,PS_LIST_TAIL,"EXPTIME", PS_META_REPLACE, "", stats->robustMedian);
 	  pmReadout *Fro1 = pmReadoutAlloc(Fcell1);
 	  Fro1->image = image1;
@@ -538,4 +561,5 @@
 	  psMetadataAddS32(Fcell2->concepts,PS_LIST_TAIL,"CELL.YPARITY", PS_META_REPLACE,"",1);
 	  psMetadataAddS32(Fcell2->concepts,PS_LIST_TAIL,"CELL.READDIR", PS_META_REPLACE,"",1);
+	  psMetadataAddF64(Fcell2->concepts,PS_LIST_TAIL,"EXPTIME", PS_META_REPLACE, "", stats->robustMedian);
 	  
 	  pmReadout *Fro2 = pmReadoutAlloc(Fcell2); 
