Index: trunk/ippTools/share/magictool_definebyquery_select.sql
===================================================================
--- trunk/ippTools/share/magictool_definebyquery_select.sql	(revision 28747)
+++ trunk/ippTools/share/magictool_definebyquery_select.sql	(revision 28765)
@@ -4,5 +4,6 @@
     MAX(diffWarps.diff_id) AS diff_id,
     -- The following trick pulls out the 'inverse' value for the maximum diff_id
-    CONVERT(SUBSTRING_INDEX(GROUP_CONCAT(diffWarps.inverse ORDER BY diffWarps.diff_id), ',', 1), UNSIGNED) AS inverse
+    CONVERT(SUBSTRING_INDEX(GROUP_CONCAT(diffWarps.inverse ORDER BY diffWarps.diff_id), ',', 1), UNSIGNED) AS inverse,
+    diff_data_group
 FROM (
     -- Forward diffs
@@ -10,5 +11,6 @@
         diffRun.diff_id,
         warp1 AS warp_id,
-        0 AS inverse
+        0 AS inverse,
+        diffRun.data_group AS diff_data_group
     FROM diffRun
     JOIN diffInputSkyfile USING(diff_id)
@@ -22,5 +24,6 @@
         diffRun.diff_id,
         warp2 AS warp_id,
-        1 AS inverse
+        1 AS inverse,
+        diffRun.data_group AS diff_data_group
     FROM diffRun
     JOIN diffInputSkyfile USING(diff_id)
Index: trunk/ippTools/src/magictool.c
===================================================================
--- trunk/ippTools/src/magictool.c	(revision 28747)
+++ trunk/ippTools/src/magictool.c	(revision 28765)
@@ -246,4 +246,5 @@
         psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id"); // difference identifier
         bool inverse = psMetadataLookupU64(NULL, row, "inverse"); // Inverse subtraction? Note types!
+        psString diff_data_group = psMetadataLookupStr(NULL, row, "diff_data_group");
 
         // create a new magicRun for this group
@@ -256,5 +257,5 @@
                                             "dirty",    // workdir_state
                                             label,
-                                            data_group ? data_group : label,
+                                            data_group ? data_group : (diff_data_group ? diff_data_group : label),
                                             dvodb,
                                             registered,
