anchor.diff:               end,
                Res
        end,Bs1};
  -eval_field({bin_element,Line,E,Size0,Options0}, Bs0, Fun) ->
  +eval_field({bin_element,Anno,E,Size0,Options0}, Bs0, Fun) ->
       {value,V,Bs1} = Fun(E, Bs0),
       {Size1,[Type,{unit,Unit},Sign,Endian]} = 
  -        make_bit_type(Line, Size0, Options0),
  +        make_bit_type(Anno, Size0, Options0),
       {value,Size,Bs} = Fun(Size1, Bs1),
       {fun() -> eval_exp_field1(V, Size, Unit, Type, Endian, Sign) end,Bs}.
   
  
positive.code:         _ ->
              done
      end;
  bin_gen_field({bin_element,Line,{string,SLine,S},Size0,Options0},
                Bin0, Bs0, BBs0, Mfun, Efun) ->
      {Size1, [Type,{unit,Unit},Sign,Endian]} =
          make_bit_type(Line, Size0, Options0),
      case catch Efun(Size1, BBs0) of
          {value, Size, _BBs} -> % 
              F = fun(C, Bin, Bs, BBs) ->
                          bin_gen_field1(Bin, Type, Size, Unit, Sign, Endian,
                                         {integer,SLine,C}, Bs, BBs, Mfun)
                  end,
              bin_gen_field_string(S, Bin0, Bs0, BBs0, F)
      end;
  bin_gen_field({bin_element,Line,VE,Size0,Options0}, 
                Bin, Bs0, BBs0, Mfun, Efun) ->
      {Size1, [Type,{unit,Unit},Sign,Endian]} = 
          make_bit_type(Line, Size0, Options0),
      V = erl_eval:partial_eval(VE),
      NewV = coerce_to_float(V, Type),
      case catch Efun(Size1, BBs0) of
  
negative.code:     {Bs,BBs,Rest}.
  
  %% Almost identical to the one in sys_pre_expand.
  coerce_to_float({integer,Anno,I}=E, float) ->
      try
  	{float,Anno,float(I)}
      catch
  	error:badarg -> E;
  	error:badarith -> E
  