Index: trunk/ippTools/share/diffphottool_advance.sql
===================================================================
--- trunk/ippTools/share/diffphottool_advance.sql	(revision 28427)
+++ trunk/ippTools/share/diffphottool_advance.sql	(revision 28428)
@@ -1,4 +1,5 @@
 SELECT
-    diff_phot_id
+    diff_phot_id,
+    magicked
 FROM diffPhotRun
 JOIN diffSkyfile USING(diff_id)
Index: trunk/ippTools/share/diffphottool_input.sql
===================================================================
--- trunk/ippTools/share/diffphottool_input.sql	(revision 28427)
+++ trunk/ippTools/share/diffphottool_input.sql	(revision 28428)
@@ -2,4 +2,5 @@
     diffPhotRun.*,
     diffSkyfile.path_base,
+    diffSkyfile.magicked,
     diffRun.bothways,
     rawExp.camera
Index: trunk/ippTools/share/diffphottool_pending.sql
===================================================================
--- trunk/ippTools/share/diffphottool_pending.sql	(revision 28427)
+++ trunk/ippTools/share/diffphottool_pending.sql	(revision 28428)
@@ -9,4 +9,5 @@
 WHERE diffPhotSkyfile.skycell_id IS NULL
     AND diffRun.state = 'full'
+    AND diffSkyfile.magicked >= 0
     AND diffSkyfile.fault = 0
     AND diffSkyfile.quality = 0
Index: trunk/ippTools/share/pubtool_definerun.sql
===================================================================
--- trunk/ippTools/share/pubtool_definerun.sql	(revision 28427)
+++ trunk/ippTools/share/pubtool_definerun.sql	(revision 28428)
@@ -56,5 +56,5 @@
         AND publishClient.active = 1
         AND diffPhotRun.state IN ('full', 'cleaned', 'goto_cleaned')
-        AND (diffRun.diff_mode = 4 OR publishClient.magicked = 0) -- diffPhotRun doesn't respect magic
+        AND (diffPhotRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
     -- WHERE hook %s
     ) AS publishToDo
Index: trunk/ippTools/share/pubtool_pending.sql
===================================================================
--- trunk/ippTools/share/pubtool_pending.sql	(revision 28427)
+++ trunk/ippTools/share/pubtool_pending.sql	(revision 28428)
@@ -74,5 +74,5 @@
         AND publishRun.state = 'new'
         AND diffPhotRun.state IN ('full', 'cleaned', 'goto_cleaned')
-        AND (diffRun.diff_mode = 4 OR publishClient.magicked = 0) -- diffPhotRun doesn't respect magic
+        AND (diffPhotRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
         -- WHERE hook %s
 ) AS publishToDo
Index: trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_create_tables.sql	(revision 28427)
+++ trunk/ippTools/share/pxadmin_create_tables.sql	(revision 28428)
@@ -1755,4 +1755,5 @@
     quality SMALLINT NOT NULL,       -- bad quality flag
     software_ver VARCHAR(16),                       -- software version
+    magicked BIGINT NOT NULL DEFAULT 0, -- magic mask applied
     PRIMARY KEY(diff_phot_id, skycell_id),
     KEY(fault),
Index: trunk/ippTools/src/diffphottool.c
===================================================================
--- trunk/ippTools/src/diffphottool.c	(revision 28427)
+++ trunk/ippTools/src/diffphottool.c	(revision 28428)
@@ -371,4 +371,5 @@
     PXOPT_LOOKUP_STR(ver_ppstats, config->args, "-ver_ppstats", false, false);
     PXOPT_LOOKUP_STR(ver_psphot, config->args, "-ver_psphot", false, false);
+    PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false);
 
     psString version = pxMergeCodeVersions(ver_pslib, ver_psmodules);
@@ -377,5 +378,5 @@
 
     if (!diffPhotSkyfileInsert(config->dbh, diff_phot_id, skycell_id, path_base, dtime_script, hostname,
-                               fault, quality, version)) {
+                               fault, quality, version, magicked)) {
         psError(psErrorCodeLast(), false, "database error");
         return false;
Index: trunk/ippTools/src/diffphottoolConfig.c
===================================================================
--- trunk/ippTools/src/diffphottoolConfig.c	(revision 28427)
+++ trunk/ippTools/src/diffphottoolConfig.c	(revision 28428)
@@ -100,4 +100,5 @@
     psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-ver_ppstats", 0, "define ppStats version", NULL);
     psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-ver_psphot", 0, "define psphot version", NULL);
+    psMetadataAddS64(doneArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", 0);
 
     // -advance
