Index: trunk/ppMerge/src/ppMergeCheckInputs.c
===================================================================
--- trunk/ppMerge/src/ppMergeCheckInputs.c	(revision 13246)
+++ trunk/ppMerge/src/ppMergeCheckInputs.c	(revision 16989)
@@ -106,7 +106,31 @@
         }
 
-        data->in->data[i] = pmFPAConstruct(config->camera);
-        pmFPAview *view = pmFPAAddSourceFromHeader(data->in->data[i], header, options->format);
+        pmFPA *fpa = pmFPAConstruct(config->camera);
+        pmFPAview *view = pmFPAAddSourceFromHeader(fpa, header, options->format);
         psFree(view);
+
+        // Cull chips and cells that don't have data
+        // Otherwise the abundance of metadata in the concepts (esp. for GPC) can overload the memory
+        psArray *chips = fpa->chips; // Array of chips in output
+        for (int i = 0; i < chips->n; i++) {
+            pmChip *chip = chips->data[i]; // Chip of interest
+            psArray *cells = chip->cells; // Array of cells
+            int culled = 0;             // Number of culled cells
+            for (int j = 0; j < cells->n; j++) {
+                pmCell *cell = cells->data[j];
+                pmHDU *hdu = pmHDUGetLowest(fpa, chip, cell); // HDU for cell
+                if (!hdu || hdu->blankPHU) {
+                    psFree(cell->concepts);
+                    cell->concepts = NULL;
+                    culled++;
+                }
+            }
+            if (culled == cells->n) {
+                psFree(chip->concepts);
+                chip->concepts = NULL;
+            }
+        }
+        data->in->data[i] = fpa;
+
 
         // Use the first valid input as the basis for the output --- including the header
