diff --git a/wand/mogrify.c b/wand/mogrify.c
index a79b258..405ec9b 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -4795,6 +4795,11 @@
           }
         if (LocaleCompare("duplicate",option+1) == 0)
           {
+            i++;
+            if (i == (ssize_t) (argc-1))
+              ThrowMogrifyException(OptionError,"MissingArgument",option);
+            if (IsGeometry(argv[i]) == MagickFalse)
+              ThrowMogrifyInvalidArgumentException(option,argv[i]);
             if (*option == '+')
               break;
             i++;
@@ -7959,7 +7964,16 @@
             Image
               *duplicate_images;
 
-            duplicate_images=DuplicateImages(*images,argv[i+1],exception);
+            size_t
+              number_duplicates;
+
+            number_duplicates=(ssize_t) StringToLong(argv[i+1]);
+            if (*option == '+')
+              duplicate_images=DuplicateImages(*images,number_duplicates,"-1",
+                exception);
+            else
+              duplicate_images=DuplicateImages(*images,number_duplicates,
+                argv[i+2],exception);
             if (*images != (Image *) NULL)
               *images=DestroyImage(*images);
             *images=duplicate_images;