Index: /trunk/dbconfig/changes.txt
===================================================================
--- /trunk/dbconfig/changes.txt	(revision 28427)
+++ /trunk/dbconfig/changes.txt	(revision 28428)
@@ -1784,4 +1784,5 @@
     quality SMALLINT NOT NULL,       -- bad quality flag
     software_ver VARCHAR(16),                       -- software version for run
+    magicked BIGINT NOT NULL DEFAULT 0, -- magic mask applied
     PRIMARY KEY(diff_phot_id, skycell_id),
     KEY(fault),
Index: /trunk/dbconfig/diffphot.md
===================================================================
--- /trunk/dbconfig/diffphot.md	(revision 28427)
+++ /trunk/dbconfig/diffphot.md	(revision 28428)
@@ -21,3 +21,4 @@
     quality          S16        0       # Key
     software_ver     STR        16
+    magicked         S64        0
 END
Index: /trunk/ippScripts/scripts/diffphot.pl
===================================================================
--- /trunk/ippScripts/scripts/diffphot.pl	(revision 28427)
+++ /trunk/ippScripts/scripts/diffphot.pl	(revision 28428)
@@ -70,6 +70,8 @@
 # Get input components
 my $mdcParser = PS::IPP::Metadata::Config->new; # Parser for metadata config files
-my ($inputPath, $camera);                     # Input path and camera
-my $bothways;                                 # Diff was done both ways?
+my $inputPath;                                  # Input path
+my $camera;                                     # Camera name
+my $bothways;                           # Diff was done both ways?
+my $magicked;                           # Magic status
 {
     my $command = "$diffphottool -input -diff_phot_id $diff_phot_id -skycell_id $skycell_id";
@@ -89,4 +91,5 @@
     $camera = $file->{camera};
     $bothways = $file->{bothways};
+    $magicked = $file->{magicked};
 }
 
@@ -252,4 +255,5 @@
     my $command = "$diffphottool -diff_phot_id $diff_phot_id -skycell_id $skycell_id";
     $command .= " -done -path_base $outroot";
+    $command .= " -magicked $magicked" if $magicked;
     $command .= " -quality $quality" if defined $quality;
     $command .= (" -dtime_script " . ((DateTime->now->mjd - $mjd_start) * 86400));
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
