Index: trunk/ppImage/src/ppImageOptions.c
===================================================================
--- trunk/ppImage/src/ppImageOptions.c	(revision 30655)
+++ trunk/ppImage/src/ppImageOptions.c	(revision 30831)
@@ -126,5 +126,6 @@
         exit(EXIT_FAILURE);
     }
-
+    psMetadata *format = config->format;
+    
     // Non-linearity recipe options
     if (psMetadataLookupBool(NULL, recipe, "NONLIN")) {
@@ -237,6 +238,18 @@
     options->doFringe = psMetadataLookupBool(NULL, recipe, "FRINGE");
     options->doShutter = psMetadataLookupBool(NULL, recipe, "SHUTTER");
-    options->doPatternRow = psMetadataLookupBool(NULL, recipe, "PATTERN.ROW");
-    options->doPatternCell = psMetadataLookupBool(NULL, recipe, "PATTERN.CELL");
+
+    // Look for pattern correction options in the camera format. If not found, look in the recipe.
+    if (psMetadataLookup(format, "PATTERN.ROW")) {
+      options->doPatternRow = psMetadataLookupBool(NULL, format, "PATTERN.ROW");
+    }
+    else {
+      options->doPatternRow = psMetadataLookupBool(NULL, recipe, "PATTERN.ROW");
+    }
+    if (psMetadataLookup(format, "PATTERN.CELL")) {
+      options->doPatternCell = psMetadataLookupBool(NULL, format, "PATTERN.CELL");
+    }
+    else {
+      options->doPatternCell = psMetadataLookupBool(NULL, recipe, "PATTERN.CELL");
+    }
     options->doMaskStats = psMetadataLookupBool(NULL, recipe, "MASK.STATS");
     options->addNoise = psMetadataLookupBool(NULL, recipe, "ADDNOISE");
@@ -344,12 +357,53 @@
 
     // Pattern correction
-    options->patternRowOrder = psMetadataLookupS32(NULL, recipe, "PATTERN.ROW.ORDER");
-    options->patternRowIter = psMetadataLookupS32(NULL, recipe, "PATTERN.ROW.ITER");
-    options->patternRowRej = psMetadataLookupF32(NULL, recipe, "PATTERN.ROW.REJ");
-    options->patternRowThresh = psMetadataLookupF32(NULL, recipe, "PATTERN.ROW.THRESH");
-    options->patternRowMean = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.ROW.MEAN"));
-    options->patternRowStdev = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.ROW.STDEV"));
-    options->patternCellBG = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.CELL.BG"));
-    options->patternCellMean = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.CELL.MEAN"));
+    if (psMetadataLookup(format, "PATTERN.ROW.ORDER")) {
+      options->patternRowOrder = psMetadataLookupS32(NULL, format, "PATTERN.ROW.ORDER");
+    }
+    else {
+      options->patternRowOrder = psMetadataLookupS32(NULL, recipe, "PATTERN.ROW.ORDER");
+    }
+    if (psMetadataLookup(format, "PATTERN.ROW.ITER")) {
+      options->patternRowIter = psMetadataLookupS32(NULL, format, "PATTERN.ROW.ITER");
+    }
+    else {
+      options->patternRowIter = psMetadataLookupS32(NULL, recipe, "PATTERN.ROW.ITER");
+    }
+    if (psMetadataLookup(format, "PATTERN.ROW.REJ")) {
+      options->patternRowRej = psMetadataLookupF32(NULL, format, "PATTERN.ROW.REJ");
+    }
+    else {
+      options->patternRowRej = psMetadataLookupF32(NULL, recipe, "PATTERN.ROW.REJ");
+    }
+    if (psMetadataLookup(format, "PATTERN.ROW.THRESH")) {
+      options->patternRowThresh = psMetadataLookupF32(NULL, format, "PATTERN.ROW.THRESH");
+    }
+    else {
+      options->patternRowThresh = psMetadataLookupF32(NULL, recipe, "PATTERN.ROW.THRESH");
+    }
+    if (psMetadataLookup(format, "PATTERN.ROW.MEAN")) {
+      options->patternRowMean = psStatsOptionFromString(psMetadataLookupStr(NULL, format, "PATTERN.ROW.MEAN"));
+    }
+    else {
+      options->patternRowMean = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.ROW.MEAN"));
+    }
+    if (psMetadataLookup(format, "PATTERN.ROW.STDEV")) {
+      options->patternRowStdev = psStatsOptionFromString(psMetadataLookupStr(NULL, format, "PATTERN.ROW.STDEV"));
+    }
+    else {
+      options->patternRowStdev = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.ROW.STDEV"));
+    }
+    if (psMetadataLookup(format, "PATTERN.CELL.BG")) {
+      options->patternCellBG = psStatsOptionFromString(psMetadataLookupStr(NULL, format, "PATTERN.CELL.BG"));
+    }
+    else {
+      options->patternCellBG = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.CELL.BG"));
+    }
+    if (psMetadataLookup(format, "PATTERN.CELL.MEAN")) {
+      options->patternCellMean = psStatsOptionFromString(psMetadataLookupStr(NULL, format, "PATTERN.CELL.MEAN"));
+    }
+    else {
+      options->patternCellMean = psStatsOptionFromString(psMetadataLookupStr(NULL, recipe, "PATTERN.CELL.MEAN"));
+    }
+
 
     // Remnance options
