Index: trunk/psphot/src/psphotArguments.c
===================================================================
--- trunk/psphot/src/psphotArguments.c	(revision 7518)
+++ trunk/psphot/src/psphotArguments.c	(revision 7519)
@@ -12,6 +12,19 @@
     }
 
-    // these other options override the PSPHOT recipe options
+    // load config data from default locations 
+    pmConfig *config = pmConfigRead(argc, argv);
+    if (config == NULL) {
+	psError(PSPHOT_ERR_CONFIG, false, "Can't find site configuration");
+	return NULL;
+    }
+
+    // Storage for other command-line arguments
+    config->arguments = psMetadataAlloc ();
+
+    // save the recipe options separately until we have loaded the recipe (psphotParseDetrend)
     psMetadata *options = psMetadataAlloc ();
+    psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "PSPHOT.OPTIONS",  PS_DATA_METADATA, "", options);
+
+    // the following options override the PSPHOT recipe options
 
     // run the test model (requires X,Y coordinate)
@@ -96,27 +109,7 @@
 	psArgumentRemove (N, argc, argv);
     }
-
-    // load config data from default locations 
-    pmConfig *config = pmConfigRead(argc, argv);
-
-    if (config == NULL) {
-	psError(PSPHOT_ERR_CONFIG, false, "pmConfigRead returns NULL");
-	psFree(options);
-	return NULL;
-    }
-
-    // Storage for other command-line arguments
-    config->arguments = psMetadataAlloc ();
-
-    // save these recipe options until we have loaded the options
-    psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "PSPHOT.OPTIONS",  PS_DATA_METADATA, "", options);
+    
+    // drop the local view on the options (saved on config->arguments)
     psFree (options);
-
-    // chip selection is used to limit chips to be processed
-    if ((N = psArgumentGet (*argc, argv, "-chip"))) {
-	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "CHIP_SELECTION", PS_DATA_STRING, "", psStringCopy(argv[N]));
-	psArgumentRemove (N, argc, argv);
-    }
 
     // the input file is a required argument; if not found, we will exit
@@ -125,4 +118,11 @@
 	psError(PSPHOT_ERR_ARGUMENTS, false, "pmConfigFileSetsMD failed to parse arguments");
 	return NULL;
+    }
+
+    // chip selection is used to limit chips to be processed
+    if ((N = psArgumentGet (*argc, argv, "-chip"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "CHIP_SELECTIONS", PS_DATA_STRING, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
     }
 
