Index: trunk/psModules/src/camera/pmFPAfileDefine.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 7589)
+++ trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 7618)
@@ -109,4 +109,7 @@
         return NULL;
     }
+    // default is to free the data after use (after written out)
+    // this can be overridden for pmFPAfiles used as carriers as well
+    file->freeLevel = file->dataLevel;
 
     if (fpa != NULL) {
@@ -199,8 +202,8 @@
     char *save = psMetadataLookupStr (&status, data, "FILE.SAVE");
     if (save != NULL) {
-        if (!strcasecmp (type, "TRUE"))     {
+        if (!strcasecmp (save, "TRUE"))     {
             file->save = true;
         }
-        if (!strcasecmp (type, "FALSE"))     {
+        if (!strcasecmp (save, "FALSE"))     {
             file->save = false;
         }
@@ -218,4 +221,7 @@
         return NULL;
     }
+    // default is to free the data after use (after written out)
+    // this can be overridden for pmFPAfiles used as carriers as well
+    file->freeLevel = file->dataLevel;
 
     if (fpa != NULL) {
@@ -266,4 +272,9 @@
     }
 
+    // add argument-supplied OUTPUT name to this file
+    char *outname = psMetadataLookupStr(&status, config->arguments, "OUTPUT");
+    psMetadataAddStr (file->names, PS_LIST_TAIL, "OUTPUT", PS_META_NO_REPLACE, "", outname);
+
+    // place the resulting file in the config system
     psMetadataAddPtr (config->files, PS_LIST_TAIL, name, PS_DATA_UNKNOWN, "", file);
     psFree (file); // we free this copy of file, but 'files' still has a copy
@@ -616,5 +627,5 @@
     PS_ASSERT_INT_POSITIVE(strlen(filename), false);
 
-    pmFPA *fpa = pmFPAConstruct (config->camera);
+    pmFPA *fpa = pmFPAConstruct (src->camera);
     pmFPAfile *file = pmFPAfileDefineOutput (config, fpa, filename);
     if (!file) {
@@ -648,4 +659,14 @@
     }
     file->fpa = pmFPAConstruct(file->camera);
+
+    for (int i = 0; i < file->fpa->chips->n; i++) {
+        pmChip *chip = file->fpa->chips->data[i];
+        for (int j = 0; j < chip->cells->n; j++) {
+            pmCell *cell = chip->cells->data[j];
+            char *name = psMetadataLookupStr (NULL, cell->concepts, "CELL.NAME");
+            fprintf (stderr, "cell %d,%d : %s\n", i, j, name);
+        }
+    }
+
     return file;
 }
