Index: trunk/ppArith/src/ppArith.h
===================================================================
--- trunk/ppArith/src/ppArith.h	(revision 28345)
+++ trunk/ppArith/src/ppArith.h	(revision 28346)
@@ -44,4 +44,5 @@
                     const pmReadout *input1, ///< Input readout
                     const pmReadout *input2, ///< Input readout
+                    float const2,            ///< Constant to apply
                     const pmConfig *config, ///< Configuration
                     const pmFPAview *view ///< View of readout on which to operate
Index: trunk/ppArith/src/ppArithArguments.c
===================================================================
--- trunk/ppArith/src/ppArithArguments.c	(revision 28345)
+++ trunk/ppArith/src/ppArithArguments.c	(revision 28346)
@@ -51,5 +51,5 @@
                         )
 {
-    psString value = psMetadataLookupStr(NULL, arguments, argName); // Value of interest 
+    psString value = psMetadataLookupStr(NULL, arguments, argName); // Value of interest
     if (value && strlen(value) > 0) {
         return psMetadataAddStr(target, PS_LIST_TAIL, mdName, 0, NULL, value);
@@ -82,4 +82,5 @@
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-op", 0, "Operation to perform", NULL);
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-file2", 0, "Second image", NULL);
+    psMetadataAddF32(arguments, PS_LIST_TAIL, "-const2", 0, "Constant", NAN);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-mask", 0, "Treat images as masks", false);
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-stats", 0, "Statistics file", NULL);
@@ -98,5 +99,5 @@
                      "File rule for output", outFilerule);
 
-    bool status = false;                // Status for file definition 
+    bool status = false;                // Status for file definition
 
     // First file
@@ -135,4 +136,12 @@
         }
     }
+    float const2 = psMetadataLookupF32(NULL, arguments, "-const2"); // Constant to apply
+    if (!isnan(const2)) {
+        if (name2) {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Cannot specify both -file2 and -const2");
+            goto ERROR;
+        }
+        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "PPARITH.CONST", 0, "Constant to apply", const2);
+    }
 
     // Output image
Index: trunk/ppArith/src/ppArithLoop.c
===================================================================
--- trunk/ppArith/src/ppArithLoop.c	(revision 28345)
+++ trunk/ppArith/src/ppArithLoop.c	(revision 28346)
@@ -62,4 +62,6 @@
     }
     psFree(iter);
+
+    float const2 = psMetadataLookupF32(&mdok, config->arguments, "PPARITH.CONST");
 
     pmFPAview *view = pmFPAviewAlloc(0); // Pointer into FPA hierarchy
@@ -138,5 +140,5 @@
 
                 // Perform the analysis
-                if (!ppArithReadout(outRO, inRO1, inRO2, config, view)) {
+                if (!ppArithReadout(outRO, inRO1, inRO2, const2, config, view)) {
                     psError(PS_ERR_UNKNOWN, false, "Unable to perform arithmetic.\n");
                     return false;
Index: trunk/ppArith/src/ppArithReadout.c
===================================================================
--- trunk/ppArith/src/ppArithReadout.c	(revision 28345)
+++ trunk/ppArith/src/ppArithReadout.c	(revision 28346)
@@ -21,5 +21,5 @@
 #include "ppArith.h"
 
-bool ppArithReadout(pmReadout *output, const pmReadout *input1, const pmReadout *input2,
+bool ppArithReadout(pmReadout *output, const pmReadout *input1, const pmReadout *input2, float const2,
                     const pmConfig *config, const pmFPAview *view)
 {
@@ -77,4 +77,6 @@
     if (input2) {
         psBinaryOp(outImage, inImage1, op, inImage2);
+    }  else if (!isnan(const2)) {
+        psBinaryOp(outImage, inImage1, op, psScalarAlloc(const2, inImage1->type.type));
     } else {
         psUnaryOp(outImage, inImage1, op);
