anchor.diff:  	    %% programming errors easier to locate.
   	    erlang:error(badarg, [Label,Name,N])
       end.
  +
  +%% Just lowercase ASCII A..Z
  +to_lower([C | Cs]) when $A =< C, C =< $Z ->
  +    [C + 32 | to_lower(Cs)];
  +to_lower([C | Cs]) ->
  +    [C | to_lower(Cs)];
  +to_lower([]) ->
  +    [].
   
   %%
   %% Data field -> {binary(),NewCompressionTable}
  
positive.code: encode_data(Comp, _, ?S_TXT, in, Data) -> {encode_txt(Data),Comp};
  encode_data(Comp, _, ?S_SPF, in, Data) -> {encode_txt(Data),Comp};
  encode_data(Comp, _, ?S_URI, in, Data) -> {encode_txt(Data),Comp};
  encode_data(Comp, _, ?S_CAA, in, Data) -> {encode_txt(Data),Comp};
  encode_data(Comp, _Pos, _Type, _Class, Data) -> {iolist_to_binary(Data),Comp}.
  
  
negative.code:     decode_txt(Data);
  decode_data(Data, _, ?S_URI, _) ->
      decode_txt(Data);
  decode_data(<<Flags:8,Data0/binary>>, _, ?S_CAA, _) ->
      {Data1,Tag} = decode_string(Data0),
      L = length(Tag),
      (1 =< L andalso L =< 15)
          orelse throw(?DECODE_ERROR),
      Value = binary_to_list(Data1),
      {Flags,to_lower(Tag),Value};
  %% sofar unknown or non standard
  decode_data(Data, _, _, _) ->
      Data.
  