diff --git a/cmdutils.c b/cmdutils.c
index e87d5eef758f982b97e54c5aa9964741c04507a8..51fd7c9b32cd17052da077e064ef7c2e5cf1e5f2 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -532,7 +532,7 @@ static const AVOption *opt_find(void *obj, const char *name, const char *unit,
     return o;
 }
 
-#define FLAGS (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
+#define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
 int opt_default(void *optctx, const char *opt, const char *arg)
 {
     const AVOption *o;