anchor.diff:          end,
       lists:foldl(F, {"", []}, FmtArgs).
   
  +calculate_fudge([], Acc) ->
  +    Acc;
  +calculate_fudge([{"~62P", _Arg, _Depth}|T], Acc) ->
  +    calculate_fudge(T, Acc+62);
  +calculate_fudge([{Fmt, Arg}|T], Acc) when
  +        Fmt == "~f"; Fmt == "~10.f";
  +        Fmt == "~g"; Fmt == "~10.g";
  +        Fmt == "~e"; Fmt == "~10.e";
  +        Fmt == "~x"; Fmt == "~X" ->
  +    calculate_fudge(T, Acc + length(lists:flatten(io_lib:format(Fmt, [Arg]))));
  +calculate_fudge([_|T], Acc) ->
  +    calculate_fudge(T, Acc).
  +
   -endif. % (EQC).
   -endif. % (TEST).
  
positive.code:                 {"~.36B", nat()},
                  {"~62P", gen_any(5), 4},
                  {"~c", gen_char()},
                  {"~tc", gen_char()}
                  %{"~f", real()}, %% floats like to make the fudge limit fail, so don't enable them
                  %{"~10.f", real()},
                  %{"~g", real()},
                  %{"~10.g", real()},
                  %{"~e", real()},
                  %{"~10.e", real()}
                 ])).
               
  
  
negative.code: prop_format() ->
      ?FORALL({FmtArgs, MaxLen}, {gen_fmt_args(), gen_max_len()},
              begin
                  %% trunc_io does not correctly calc safe size of pid/port/numbers/funs
                  FudgeLen = calculate_fudge(FmtArgs, 50),
                  {FmtStr, Args} = build_fmt_args(FmtArgs),
                  try
                      Str = lists:flatten(lager_trunc_io:format(FmtStr, Args, MaxLen)),
  