let arg_spec_of_integer opt_name minimum opt_ref doc =
  (opt_name,
   Arg.Int
     (fun n ->
        if n >= minimum then
          opt_ref := n
        else
          let s =
            if minimum = 0 then "negative"
            else "lesser than " ^ (string_of_int minimum)
          in
            raise (Arg.Bad ("Incorrect " ^ s ^ " value `" ^ (string_of_int n) ^
                               "' for option " ^ opt_name))),
   "<int> " ^ doc ^ "   (default "
   ^ (string_of_int !opt_ref) ^ ")")