Index: trunk/psModules/src/concepts/pmConceptsAverage.c
===================================================================
--- trunk/psModules/src/concepts/pmConceptsAverage.c	(revision 12653)
+++ trunk/psModules/src/concepts/pmConceptsAverage.c	(revision 12654)
@@ -22,5 +22,5 @@
 // Set a variety of concepts in a cell by averaging over several
 // XXX does not properly set XSIZE, YSIZE
-bool pmConceptsAverageCells(pmCell *target, psList *sources, psRegion *trimsec, psRegion *biassec)
+bool pmConceptsAverageCells(pmCell *target, psList *sources, psRegion *trimsec, psRegion *biassec, bool same)
 {
     PS_ASSERT_PTR_NON_NULL(target, false);
@@ -61,6 +61,10 @@
             xBin    = psMetadataLookupS32(NULL, cell->concepts, "CELL.XBIN");
             yBin    = psMetadataLookupS32(NULL, cell->concepts, "CELL.YBIN");
-            x0      = psMetadataLookupS32(NULL, cell->concepts, "CELL.X0");
-            y0      = psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0");
+
+            if (same) {
+                // Only makes sense to update these if they are the same cell
+                x0  = psMetadataLookupS32(NULL, cell->concepts, "CELL.X0");
+                y0  = psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0");
+            }
         } else {
             if (timeSys != psMetadataLookupS32(NULL, cell->concepts, "CELL.TIMESYS")) {
@@ -84,13 +88,15 @@
                 success = false;
             }
-            if (x0 != psMetadataLookupS32(NULL, cell->concepts, "CELL.X0")) {
-                psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Differing CELL.X0 in use: %d vs %d\n",
-                        x0, psMetadataLookupS32(NULL, cell->concepts, "CELL.X0"));
-                success = false;
-            }
-            if (y0 != psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0")) {
-                psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Differing CELL.Y0 in use: %d vs %d\n",
-                        y0, psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0"));
-                success = false;
+            if (same) {
+                if (x0 != psMetadataLookupS32(NULL, cell->concepts, "CELL.X0")) {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Differing CELL.X0 in use: %d vs %d\n",
+                            x0, psMetadataLookupS32(NULL, cell->concepts, "CELL.X0"));
+                    success = false;
+                }
+                if (y0 != psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0")) {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Differing CELL.Y0 in use: %d vs %d\n",
+                            y0, psMetadataLookupS32(NULL, cell->concepts, "CELL.Y0"));
+                    success = false;
+                }
             }
         }
@@ -123,6 +129,8 @@
     MD_UPDATE(target->concepts, "CELL.XBIN", S32, xBin);
     MD_UPDATE(target->concepts, "CELL.YBIN", S32, yBin);
-    MD_UPDATE(target->concepts, "CELL.X0", S32, x0);
-    MD_UPDATE(target->concepts, "CELL.Y0", S32, y0);
+    if (same) {
+        MD_UPDATE(target->concepts, "CELL.X0", S32, x0);
+        MD_UPDATE(target->concepts, "CELL.Y0", S32, y0);
+    }
 
     // CELL.TIME needs special care
