Index: /trunk/dbconfig/cam.md
===================================================================
--- /trunk/dbconfig/cam.md	(revision 36913)
+++ /trunk/dbconfig/cam.md	(revision 36914)
@@ -119,4 +119,5 @@
     quality        S16      0
     background_model  S16   0
+    astrom_chips   S64      0
 END
 
Index: /trunk/dbconfig/changes.txt
===================================================================
--- /trunk/dbconfig/changes.txt	(revision 36913)
+++ /trunk/dbconfig/changes.txt	(revision 36914)
@@ -2521,3 +2521,6 @@
 UPDATE dbversion set schema_version = '1.1.79', updated= CURRENT_TIMESTAMP();
 
-
+ALTER TABLE camProcessedExp ADD COLUMN astrom_chips BIGINT;
+UPDATE dbversion set schema_version = '1.1.79', updated= CURRENT_TIMESTAMP();
+
+
Index: /trunk/ippTools/share/camtool_find_processedexp.sql
===================================================================
--- /trunk/ippTools/share/camtool_find_processedexp.sql	(revision 36913)
+++ /trunk/ippTools/share/camtool_find_processedexp.sql	(revision 36914)
@@ -1,4 +1,5 @@
 SELECT
     camProcessedExp.*,
+    HEX(IFNULL(camProcessedExp.astrom_chips, 0)) AS good_astrom_chips,
     camRun.workdir,
     camRun.label,
Index: /trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- /trunk/ippTools/share/pxadmin_create_tables.sql	(revision 36913)
+++ /trunk/ippTools/share/pxadmin_create_tables.sql	(revision 36914)
@@ -523,4 +523,5 @@
     quality SMALLINT NOT NULL DEFAULT 0,
     background_model SMALLINT,
+    astrom_chips BIGINT,
     PRIMARY KEY(cam_id),
     KEY(fault),
Index: /trunk/ippTools/src/camtool.c
===================================================================
--- /trunk/ippTools/src/camtool.c	(revision 36913)
+++ /trunk/ippTools/src/camtool.c	(revision 36914)
@@ -501,4 +501,6 @@
     PXOPT_LOOKUP_S16(quality, config->args, "-quality", false, false);
     PXOPT_LOOKUP_S16(background_model, config->args, "-background_model", false, false);
+    PXOPT_LOOKUP_S64(astrom_chips, config->args, "-astrom_chips", false, false);
+
     
     PXOPT_LOOKUP_STR(ver_pslib, config->args, "-ver_pslib", false, false);
@@ -692,5 +694,6 @@
         deteff_uq,
         quality,
-	background_model
+	background_model,
+        astrom_chips
         );
 
Index: /trunk/ippTools/src/camtoolConfig.c
===================================================================
--- /trunk/ippTools/src/camtoolConfig.c	(revision 36913)
+++ /trunk/ippTools/src/camtoolConfig.c	(revision 36914)
@@ -205,4 +205,5 @@
     psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-deteff_inst_uq", 0, "define deteff_uq", NAN);
     psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-background_model", 0, "set background_model value", 0);
+    psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-astrom_chips", 0, "chips with successful astrom", -1);
 
     // -processedexp
Index: /trunk/ippconfig/recipes/ppStats.config
===================================================================
--- /trunk/ippconfig/recipes/ppStats.config	(revision 36913)
+++ /trunk/ippconfig/recipes/ppStats.config	(revision 36914)
@@ -116,4 +116,5 @@
   HEADER        STR     DT_ASTR  # elapsed time in astrometry processing
   HEADER        STR     NASTRO
+  HEADER        STR     ASTROM_CHIPS
 
   HEADER        STR     ZPT_OBS
Index: /trunk/ippconfig/recipes/ppStatsFromMetadata.config
===================================================================
--- /trunk/ippconfig/recipes/ppStatsFromMetadata.config	(revision 36913)
+++ /trunk/ippconfig/recipes/ppStatsFromMetadata.config	(revision 36914)
@@ -274,4 +274,5 @@
   ENTRY  VAL  DT_ASTR             F32  SUM              -dtime_astrom      
   ENTRY  VAL  NASTRO              S32  SUM              -n_astrom          
+  ENTRY  VAL  ASTROM_CHIPS        U64  BITWISEOR        -astrom_chips
 
   ENTRY  VAL  ZPT_OBS             F32  SAMPLE_MEAN      -zpt_obs
Index: /trunk/ppStats/src/ppStatsFromMetadataStats.c
===================================================================
--- /trunk/ppStats/src/ppStatsFromMetadataStats.c	(revision 36913)
+++ /trunk/ppStats/src/ppStatsFromMetadataStats.c	(revision 36914)
@@ -1,3 +1,5 @@
 # include "ppStatsInternal.h"
+
+static void computeBitwiseOr(ppStatsEntry *entry);
 
 // calculate the stats for the non-constant entries (already calculated)
@@ -11,4 +13,9 @@
         // XXX skip or warn on missing stats?
         if (!entry->vector) continue;
+
+        if (!strcasecmp (entry->statistic, "bitwiseor")) {
+            computeBitwiseOr(entry);
+            continue;
+        }
 
         psStatsOptions option;
@@ -68,2 +75,27 @@
     return true;
 }
+
+static void computeBitwiseOr(ppStatsEntry *entry)
+{
+    psU64 result = 0;
+    psVector *vector = entry->vector;
+    for (int j = 0; j < vector->n; j++) {
+        // XXX: should we handle other types
+        if (entry->type == PS_DATA_U64) {
+            result |= vector->data.U64[j];
+        } else if (entry->type == PS_DATA_U32) {
+            result |= vector->data.U32[j];
+        } else {
+            return;
+        } 
+    }
+
+    if (entry->type == PS_DATA_U64) {
+        entry->value = psMetadataItemAllocU64(entry->keyword, entry->statistic, result);
+    } else {
+        entry->value = psMetadataItemAllocU32(entry->keyword, entry->statistic, result);
+    }
+
+    return;
+}
+
Index: /trunk/psastro/src/psastroChipAstrom.c
===================================================================
--- /trunk/psastro/src/psastroChipAstrom.c	(revision 36913)
+++ /trunk/psastro/src/psastroChipAstrom.c	(revision 36914)
@@ -143,4 +143,9 @@
                 numGoodRO++;
 
+                psU64 astrom_chip_val = 1;
+                astrom_chip_val <<= view->chip;
+                psMetadataAddU64 (updates, PS_LIST_TAIL, "ASTROM_CHIPS", PS_META_REPLACE, 
+                    "chips that passed astrometry", astrom_chip_val);
+
                 // write the elapsed time here; this will be updated in psastroMosaicAstrometry, if called
                 psMetadataAddF32 (updates, PS_LIST_TAIL, "DT_ASTR", PS_META_REPLACE, "elapsed psastro time", psTimerMark ("psastroAnalysis"));
Index: /trunk/psastro/src/psastroOneChipFit.c
===================================================================
--- /trunk/psastro/src/psastroOneChipFit.c	(revision 36913)
+++ /trunk/psastro/src/psastroOneChipFit.c	(revision 36914)
@@ -228,4 +228,5 @@
     psMetadataAddF32 (updates, PS_LIST_TAIL, "CPRECISE", PS_META_REPLACE, "astrometry precision (arcsec)", 0.0);
     psMetadataAddS32 (updates, PS_LIST_TAIL, "NASTRO",   PS_META_REPLACE, "number of astrometry stars", 0);
+    psMetadataAddU64 (updates, PS_LIST_TAIL, "ASTROM_CHIPS", PS_META_REPLACE, "chips that passed astrometry", 0);
     return true;
 }
