anchor.diff:  format_error({unbound_var,N,{F,A}}) ->
       io_lib:format("unbound variable ~s in ~w/~w", [N,F,A]);
   format_error({undefined_function,{F1,A1},{F2,A2}}) ->
  -    io_lib:format("undefined function ~w/~w in ~w/~w", [F1,A1,F2,A2]).
  +    io_lib:format("undefined function ~w/~w in ~w/~w", [F1,A1,F2,A2]);
  +format_error({tail_segment_not_at_end,{F,A}}) ->
  +    io_lib:format("binary tail segment not at end in ~w/~w", [F,A]).
   
   -type ret() :: {'ok', [{module(), [warning(),...]}]}
                | {'error', [{module(), [error(),...]}],
  
positive.code: pat_segment(_, Def, Ps, St) ->
      {Ps,Def,add_error({not_bs_pattern,St#lint.func}, St)}.
  
  %% pat_bit_expr(SizePat, Type, Defined, State) -> State.
  %%  Check the Size pattern, this is an input!  Because of optimizations,
  %%  we must allow any kind of constant and literal here.
  
negative.code:     pattern_list([H,T], Def, Ps, St);
  pattern(#c_tuple{es=Es}, Def, Ps, St) ->
      pattern_list(Es, Def, Ps, St);
  pattern(#c_binary{segments=Ss}, Def, Ps, St0) ->
      St = pat_bin_tail_check(Ss, St0),
      pat_bin(Ss, Def, Ps, St);
  pattern(#c_alias{var=V,pat=P}, Def, Ps, St0) ->
      {Vvs,St1} = variable(V, Ps, St0),
  