Index: trunk/ppStack/src/ppStackArguments.c
===================================================================
--- trunk/ppStack/src/ppStackArguments.c	(revision 14834)
+++ trunk/ppStack/src/ppStackArguments.c	(revision 14842)
@@ -19,5 +19,6 @@
 {
     fprintf(stderr, "\nPan-STARRS Image combination\n\n");
-    fprintf(stderr, "Usage: %s INPUTS.mdc OUTPUT_ROOT [-target FWHM] [-sources STAMPS.cmf]\n"
+    fprintf(stderr,
+            "Usage: %s INPUTS.mdc OUTPUT_ROOT [-target FWHM] [-sources STAMPS.cmf | -stamps STAMPS.dat]\n"
             "where INPUTS.mdc contains various METADATAs, each with:\n"
             "\tIMAGE(STR):     Image filename\n"
@@ -100,4 +101,5 @@
 {
     assert(config);
+    bool mdok;                          // Status of MD lookup
 
     pmConfigFileSetsMD(config->arguments, &argc, argv, "PPSTACK.SOURCES", "-sources", NULL);
@@ -121,9 +123,9 @@
 
     const char *stampsName = psMetadataLookupStr(NULL, arguments, "-stamps"); // Name of stamps file
-    if (!stampsName || strlen(stampsName) == 0) {
-        psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Stamps file not specified with -stamps.");
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "STAMPS", 0, "Stamps file", stampsName);
+    if (!stampsName && !psMetadataLookupPtr(&mdok, config->arguments, "PPSTACK.SOURCES")) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "One of -sources or -stamps must be specified.");
         goto ERROR;
     }
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "STAMPS", 0, "Stamps file", stampsName);
 
     float target = psMetadataLookupF32(NULL, arguments, "-target"); // Target PSF width
