Index: /trunk/ppStack/src/ppStackArguments.c
===================================================================
--- /trunk/ppStack/src/ppStackArguments.c	(revision 13511)
+++ /trunk/ppStack/src/ppStackArguments.c	(revision 13512)
@@ -85,4 +85,5 @@
     psMetadataAddU8(arguments,  PS_LIST_TAIL, "-mask-bad", 0, "Mask value for bad pixels", 0);
     psMetadataAddU8(arguments,  PS_LIST_TAIL, "-mask-blank", 0, "Mask value for blank region", 0);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-seeing", 0, "Name of file with seeing FWHMs", NULL);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 4) {
@@ -112,4 +113,17 @@
     VALUE_ARG_RECIPE_INT("-mask-blank",     "MASK.BLANK",   U8, 0);
 
+    const char *seeingName = psMetadataLookupStr(NULL, arguments, "-seeing"); // Name of seeing file
+    if (seeingName && strlen(seeingName) > 0) {
+        psArray *seeing = psVectorsReadFromFile(seeingName, "%f"); // Array with seeing vector only
+        if (!seeing || seeing->n != 1) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to read file with seeing FWHMs.");
+            psFree(seeing);
+            goto ERROR;
+        }
+        psMetadataAddVector(config->arguments, PS_LIST_TAIL, "SEEING", 0, "Seeing in each image",
+                            seeing->data[0]);
+        psFree(seeing);
+    }
+
     psTrace("ppStack", 1, "Done reading command-line arguments\n");
     psFree(arguments);
Index: /trunk/ppStack/src/ppStackReadout.c
===================================================================
--- /trunk/ppStack/src/ppStackReadout.c	(revision 13511)
+++ /trunk/ppStack/src/ppStackReadout.c	(revision 13512)
@@ -12,5 +12,4 @@
 
 
-#define SEEING 1.0                      // Seeing FWHM (pixels)
 #define WEIGHT 1.0                      // Weighting
 
@@ -18,4 +17,5 @@
 {
     // Get the recipe values
+    bool mdok;                          // Status of MD lookup
     int iter = psMetadataLookupS32(NULL, config->arguments, "ITER"); // Rejection iterations
     float combineRej = psMetadataLookupF32(NULL, config->arguments, "COMBINE.REJ"); // Combination threshold
@@ -24,4 +24,5 @@
     psMaskType maskBad = psMetadataLookupU8(NULL, config->arguments, "MASK.BAD"); // Value to mask
     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
+    psVector *seeing = psMetadataLookupPtr(&mdok, config->arguments, "SEEING"); // Seeing in each image
 
     // Get the output target
@@ -39,4 +40,5 @@
     psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN); // Statistics
     psRandom *rng = psRandomAlloc(0, PS_RANDOM_TAUS); // Random number generator
+    int fileNum = 0;                    // Number of file
     while ((item = psMetadataGetAndIncrement(inputIter))) {
         assert(item->type == PS_DATA_UNKNOWN);
@@ -69,7 +71,9 @@
         }
         (void)psBinaryOp(ro->image, ro->image, "/", psScalarAlloc(exposure, PS_TYPE_F32));
-        pmStackData *data = pmStackDataAlloc(ro, SEEING, WEIGHT); // Data to stack
+        pmStackData *data = pmStackDataAlloc(ro, seeing ? seeing->data.F32[fileNum] : 0.0,
+                                             WEIGHT); // Data to stack
         psArrayAdd(stack, ARRAY_BUFFER, data);
         psFree(data);                   // Drop reference
+        fileNum++;
     }
     psFree(inputIter);
@@ -107,5 +111,6 @@
 #endif
 
-    if (!pmStackReject(stack, maskBad, extent, convolveRej)) {
+    // Only perform the additional rejection if we have seeing information
+    if (seeing && !pmStackReject(stack, maskBad, extent, convolveRej)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to reject input pixels.");
         psFree(stack);
