anchor.diff:                 end
                  || {Field, Param} <- lists:zip(MsgDef, Params)]);
           pass_as_record ->
  -            RevFnName = mk_fn(d_reverse_toplevel_fields_, MsgName),
  -            ?expr('<reverse-toplevel-fields>'('<Params>'),
  -                  [{replace_term, '<reverse-toplevel-fields>', RevFnName},
  -                   {splice_trees, '<Params>', Params}])
  +            MsgVar = hd(Params),
  +            record_update(
  +              MsgVar,
  +              MsgName,
  +              [begin
  +                   FieldAccess = record_access(MsgVar, MsgName, FName),
  +                   FValueExpr = ?expr(lists:reverse('<Param>'),
  +                                      [{replace_tree, '<Param>', FieldAccess}]),
  +                   {FName, FValueExpr}
  +               end
  +               || #field{name=FName, occurrence=repeated} <- MsgDef])
       end.
   
   new_bindings(Tuples) ->
  
positive.code: 
  format_msg_decoder(MsgName, MsgDef, AnRes, Opts) ->
      [format_msg_decoder_read_field(MsgName, MsgDef, AnRes),
       format_msg_decoder_reverse_toplevel(MsgName, MsgDef, AnRes),
       format_field_decoders(MsgName, MsgDef, AnRes, Opts),
       format_field_skippers(MsgName, AnRes)].
  
  
negative.code:         splice_trees('<OutFill>', OutFill),
          splice_trees('<OutParams>', Params2)]),
       "\n\n"].
  
  classify_field_merge_action(FieldDef) ->
      case FieldDef of
  