anchor.diff:      {Data2,Services} = decode_string(Data1),
       {Data,Regexp} = decode_characters(Data2, utf8),
       Replacement = decode_domain(Data, Buffer),
  -    {Order,Preference,string:lowercase(Flags),string:lowercase(Services),
  +    {Order,Preference,to_lower(Flags),to_lower(Services),
        Regexp,Replacement};
   %% ?S_OPT falls through to default
   decode_data(Data, _, ?S_TXT, _) ->
  
positive.code:     decode_txt(Data);
  decode_data(Data, _, ?S_URI, _) ->
      decode_txt(Data);
  decode_data(Data, _, ?S_CAA, _) ->
      decode_txt(Data);
  %% sofar unknown or non standard
  decode_data(Data, _, _, _) ->
      Data.
  
negative.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, {Flags,Tag,Value}) ->
      B0 = <<Flags:8>>,
      B1 = encode_string(B0, iolist_to_binary(Tag)),
      B2 = iolist_to_binary(Value),
      {<<B1/binary,B2/binary>>,Comp};
  encode_data(Comp, _, ?S_CAA, in, Data) -> {encode_txt(Data),Comp};
  encode_data(Comp, _Pos, _Type, _Class, Data) -> {iolist_to_binary(Data),Comp}.
  
  