anchor.diff:      %% FIXME: enum values can be negative, but "raw" varints are positive
       %%        insert a 2-complement in the mapping in order to move computations
       %%        from run-time to compile-time??
  -    [[gpb_codegen:format_fn(
  -        mk_fn(d_enum_, EnumName),
  -        fun('<enum-int-value>') -> '<enum-sym>' end,
  -        [splice_clauses(
  -           '<enum-int-value>',
  -           [gpb_codegen:fn_clause(fun('<i>') -> '<s>' end,
  -                                  [replace_term('<i>', EnumValue),
  -                                   replace_term('<s>', EnumSym)])
  -            || {EnumSym, EnumValue} <- EnumDef])])
  -      "\n\n"]
  +    [gpb_codegen:format_fn(
  +       mk_fn(d_enum_, EnumName),
  +       fun('<enum-int-value>') -> '<enum-sym>' end,
  +       [splice_clauses(
  +          '<enum-int-value>',
  +          [gpb_codegen:fn_clause(fun('<i>') -> '<s>' end,
  +                                 [replace_term('<i>', EnumValue),
  +                                  replace_term('<s>', EnumSym)])
  +           || {EnumSym, EnumValue} <- EnumDef])])
        || {{enum, EnumName}, EnumDef} <- Defs,
           smember({enum,EnumName}, UsedTypes)].
   
  
positive.code:     end.
  
  format_dpacked_nonvi(MsgName, #field{name=FName}, BitLen, BitTypes)     ->
      [gpb_codegen:format_fn(
         mk_fn(d_packed_field_, MsgName, FName),
         fun(<<Value:'<N>'/'<T>', Rest/binary>>, Z1, Z2, AccSeq) ->
                 call_self(Rest, Z1, Z2, [Value | AccSeq]);
            (<<>>, _, _, AccSeq) ->
                 AccSeq
         end,
         [replace_term('<N>', BitLen),
          splice_trees('<T>', [erl_syntax:atom(BT) || BT <- BitTypes])]),
       "\n\n"].
  
  format_dpacked_vi(MsgName, #field{name=FName}=FieldDef, Opts) ->
      ExtValue = ?expr(X bsl N + Acc),
  
negative.code:        [replace_term('<call-recursively>', SkipLenDelimFnName),
          replace_term('<call-read-field>', ReadFieldFnName),
          splice_trees('<Params>', Params)]),
       "\n",
       %% skip_32_<MsgName>/2,4
       %% skip_64_<MsgName>/2,4
       [[gpb_codegen:format_fn(
  