anchor.diff:  
   -define(H(X), (hex(X)):16).
   
  --define(THOUSAND_SEP,[$',$,]).      %% ' or , are ignored in integer strings (first one is used on output)     
  +-define(THOUSAND_SEP,[$']).         %% ' is ignored in integer strings or expressions
   -define(USE_THOUSAND_SEP,true).     %% comment out if no thousands separation is wanted on output
   
   -define(BinaryMaxLen,250).          %% more represented by "..." suffix
  
positive.code: io_to_decimal(Val,Len,0) ->         %% use fixed point arithmetic with implicit scaling factor
      io_to_integer(Val,Len,0);
  io_to_decimal(Val,Len,Prec) ->
      case string:join(string:tokens(Val,?THOUSAND_SEP),[]) of
          [$-|Positive] -> Sign = [$-];
          Positive -> Sign = []
      end,
  
negative.code: io_to_integer(Val,Len,Prec) when is_binary(Val) ->
      io_to_integer(binary_to_list(Val),Len,Prec);
  io_to_integer(Val,Len,Prec) ->
      ValStr = re:replace(Val, ?THOUSAND_SEP, "", [global, {return, list}]),
      Value = try  list_to_integer(ValStr)
          catch _:_ -> 
              try erlang:round(list_to_float(Val))
              catch _:_ ->  
                  case io_to_term(ValStr) of
                      V when is_integer(V) -> V;
                      V when is_float(V) ->   erlang:round(V);
                      _ ->                    ?ClientErrorNoLogging({"Data conversion format error",{integer,Len,Prec,Val}})
  