Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 16604)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 16607)
@@ -306,6 +306,35 @@
                                                        inner, binning, ringsOrder, mode);
             }
-            psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, "SUBTRACTION.KERNEL",
-                             PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
+
+            // Add analysis metadata
+            {
+                psMetadataAddPtr(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_KERNEL,
+                                 PS_DATA_UNKNOWN | PS_META_DUPLICATE_OK, "Subtraction kernels", kernels);
+                if (conv2) {
+                    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_META_DUPLICATE_OK, "Subtraction kernels", mode);
+                if (conv2) {
+                    psMetadataAddS32(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_MODE,
+                                     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);
+                if (conv2) {
+                    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");
@@ -442,25 +471,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;
