anchor.diff:  	false -> nomatch
       end;
   match_down(#ctx{cuts = Cuts, names = Names, rr = RRs} = Q, LastDname,
  -	   [Label|Labels]) ->
  +	   [RawLabel|Labels]) ->
  +    Label = escape_label(RawLabel),
       LabelSize = byte_size(Label),
       Name = <<Label:LabelSize/binary, $., LastDname/binary>>,
       NameIsCut = lists:member(Name, Cuts),
  
positive.code: match_qtype(#ctx{}, _Type, #dnsxd_rr{}) -> false.
  
  match_down(#ctx{cuts = Cuts, names = Names, rr = RRs} = Q,
  	   LastDname, [Label]) ->
      LabelSize = byte_size(Label),
      Name = <<Label:LabelSize/binary, $., LastDname/binary>>,
      WName = <<"*.", LastDname/binary>>,
  
negative.code:     end.
  
  join_labels(Labels) ->
      <<_, Dname/binary>> = << <<$., (escape_label(L))/binary>> || L <- Labels >>,
      Dname.
  
  escape_label(Label) -> escape_label(<<>>, Label).
  escape_label(Label, <<>>) -> Label;
  escape_label(Label, <<C, Rest/binary>>) ->
      NewLabel = case C of
  		   $. -> <<Label/binary, $\\, $.>>;
  		   _ -> <<Label/binary, C>>
  	       end,
      escape_label(NewLabel, Rest).
  
  build_cuts(ZoneName, RRs) -> build_cuts(ZoneName, RRs, []).
  
  