anchor.diff:  
   -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 
   	 init_per_group/2,end_per_group/2,
  -	 init_per_testcase/2, end_per_testcase/2]).
  +	 init_per_testcase/2, end_per_testcase/2
  +        ]).
   -export([basic/1, resolve/1, edns0/1, txt_record/1, files_monitor/1,
  -	 last_ms_answer/1, intermediate_error/1]).
  +	 last_ms_answer/1, intermediate_error/1,
  +         servfail_retry_timeout_default/1, servfail_retry_timeout_1000/1
  +        ]).
   -export([
   	 gethostbyaddr/0, gethostbyaddr/1,
   	 gethostbyaddr_v6/0, gethostbyaddr_v6/1,
  
positive.code: 
  zone_dir(TC) ->
      case TC of
  	basic -> otptest;
  	resolve -> otptest;
  	edns0 -> otptest;
  	files_monitor -> otptest;
  	last_ms_answer -> otptest;
          intermediate_error ->
              {internal,
               #{rcode => ?REFUSED}};
  	_ -> undefined
      end.
  
  
negative.code: %% Internal name server
  
  ns_internal(ServerSpec, Mref, Tag, S) ->
      ?P("ns-internal -> await message"),
      receive
          {'DOWN',Mref,_,_,Reason} ->
              ?P("ns-internal -> received DOWN: "
                 "~n      ~p", [Reason]),
              exit(Reason);
          Tag ->
              ?P("ns-internal -> received tag: done"),
              ok;
          {udp,S,IP,Port,Data} ->
              ?P("ns-internal -> received UDP message"),
              Req = ok(inet_dns:decode(Data)),
              {Resp, ServerSpec2} = ns_internal(ServerSpec, Req),
              RespData = inet_dns:encode(Resp),
              _ = ok(gen_udp:send(S, IP, Port, RespData)),
              _ = ok(inet:setopts(S, [{active,once}])),
              ns_internal(ServerSpec2, Mref, Tag, S)
      end.
  
  ns_internal(#{rcode := Rcode,
                ts    := TS0,
                etd   := ETD} = ServerSpec, Req) ->
      ?P("ns-internal -> request received (time validation)"),
      TS1    = timestamp(),
      Hdr    = inet_dns:msg(Req, header),
      Opcode = inet_dns:header(Hdr, opcode),
      Id     = inet_dns:header(Hdr, id),
      Rd     = inet_dns:header(Hdr, rd),
      %%
      Qdlist = inet_dns:msg(Req, qdlist),
      ?P("ns-internal -> time validation: "
         "~n      ETD:       ~w"
         "~n      TS1 - TS0: ~w", [ETD, TS1 - TS0]),
      RC = if ((TS1 - TS0) >= ETD) ->
                   ?P("ns-internal -> time validated"),
                   ?NOERROR;
              true ->
                   ?P("ns-internal -> time validation failed"),
                   Rcode
           end,
      Resp   = inet_dns:make_msg(
                 [{header,
                   inet_dns:make_header(
                     [{id,     Id},
                      {qr,     true},
                      {opcode, Opcode},
                      {aa,     true},
                      {tc,     false},
                      {rd,     Rd},
                      {ra,     false},
                      {rcode,  RC}])},
                  {qdlist, Qdlist}]),
      {Resp, ServerSpec#{ts => timestamp()}};
  ns_internal(#{rcode := Rcode} = ServerSpec, Req) ->
      ?P("ns-internal -> request received"),
      Hdr    = inet_dns:msg(Req, header),
      Opcode = inet_dns:header(Hdr, opcode),
      Id     = inet_dns:header(Hdr, id),
      Rd     = inet_dns:header(Hdr, rd),
      %%
      Qdlist = inet_dns:msg(Req, qdlist),
      Resp   = inet_dns:make_msg(
                 [{header,
                   inet_dns:make_header(
                     [{id,Id},
                      {qr,true},
                      {opcode,Opcode},
                      {aa,true},
                      {tc,false},
                      {rd,Rd},
                      {ra,false},
                      {rcode,Rcode}])},
                  {qdlist,Qdlist}]),
      {Resp, ServerSpec#{ts => timestamp()}}.
  
  
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% Behaviour modifying nameserver proxy
  