anchor.diff:                  length(ActiveLeases) == TargetSize andalso
                   length(PassiveLeases) == 0
       end.
  +
  +check_leases_per_node() ->
  +    lists:all([ check_local_leases(DHTNode) || DHTNode <- pid_groups:find_all(dht_node) ]).
  +
  +check_local_leases(DHTNode) ->
  +    {ActiveLeases, PassiveLeases} = get_dht_node_state(DHTNode, lease_list),
  +    ActiveIntervals = lists:flatten(
  +                        [ l_on_cseq:get_range(Lease) || Lease <- ActiveLeases]),
  +    MyRange = get_dht_node_state(DHTNode, my_range),
  +    LocalCorrect = intervals:are_equal(MyRange, ActiveIntervals),
  +    length(PassiveLeases) == 0 andalso LocalCorrect.
  
positive.code:     synchronous_join(4),
      true.
  
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  
negative.code:     wait_for(fun () -> api_vm:number_of_nodes() == Size end).
  
  wait_for_correct_ring() ->
      wait_for(fun () -> admin:check_ring_deep() == ok end).
  
  
  get_dht_node_state(Pid, What) ->
  