Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 16399)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 16400)
@@ -308,12 +308,27 @@
 
             // Add analysis metadata
-            psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_KERNEL,
-                             PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
-            psMetadataAddPtr(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_KERNEL,
-                             PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
-            psMetadataAddS32(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_MODE,
-                             PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", mode);
-            psMetadataAddS32(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_MODE,
-                             PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", mode);
+            {
+                psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_KERNEL,
+                                 PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
+                psMetadataAddPtr(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_KERNEL,
+                                 PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
+                psMetadataAddS32(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_MODE,
+                                 PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", mode);
+                psMetadataAddS32(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_MODE,
+                                 PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", mode);
+                psRegion *subRegion;
+                if (region) {
+                    subRegion = psMemIncrRefCounter(region);
+                } else {
+                    subRegion = psRegionAlloc(0, numCols, 0, numRows);
+                }
+                psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION,
+                                  PS_DATA_REGION | PS_META_DUPLICATE_OK,
+                                 "Region over which subtraction was performed", subRegion);
+                psMetadataAddPtr(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION,
+                                  PS_DATA_REGION | PS_META_DUPLICATE_OK,
+                                 "Region over which subtraction was performed", subRegion);
+                psFree(subRegion);
+            }
 
             memCheck("kernels");
@@ -449,25 +464,4 @@
             kernels = NULL;
 
-#if 0
-            // Put the solution on the metadata
-            {
-                psString comment = NULL; // Comment for metadata
-                psStringAppend(&comment, "Subtraction solution for region %s", regionString);
-                psMetadataAddVector(conv1->analysis, PS_LIST_TAIL, "SUBTRACTION.SOLUTION",
-                                    PS_META_DUPLICATE_OK, comment, solution);
-                psFree(comment);
-                if (region) {
-                    psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, "SUBTRACTION.REGION",
-                                     PS_META_DUPLICATE_OK | PS_DATA_REGION, comment, region);
-                } else {
-                    region = psRegionAlloc(0, numCols, 0, numRows);
-                    psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, "SUBTRACTION.REGION",
-                                     PS_META_DUPLICATE_OK | PS_DATA_REGION, comment, region);
-                    psFree(region);
-                    region = NULL;
-                }
-            }
-#endif
-
             // There is data in the readout now
             conv1->data_exists = true;
