anchor.diff:  -export([encodeBlob/2, decodeBlob/1,
            map_key_to_interval/2,
            mapInterval/2, map_key_to_quadrant/2, 
  -         get_key_quadrant/1, get_interval_quadrant/1]).
  +         get_key_quadrant/1, get_interval_quadrant/1,
  +         find_intersection/2]).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % debug
  
positive.code: -spec map_key_to_interval(?RT:key(), intervals:interval()) -> ?RT:key().
  map_key_to_interval(Key, I) ->
      RGrp = [K || K <- lists:sort(?RT:get_replica_keys(Key)), intervals:in(K, I)],
      case length(RGrp) of
          0 -> erlang:error(e);
          1 -> erlang:hd(RGrp);
          _ ->
              RGrpDis = [{X, ?RT:get_range(Key, X)} || X <- RGrp],
              element(1, erlang:hd(lists:keysort(2, RGrpDis)))
      end.
  
  -spec map_key_to_quadrant(?RT:key(), pos_integer()) -> ?RT:key().
  
negative.code:                         ownerLocalPid = Owner,
                          ownerRemotePid = OwnerR,
                          dest_rr_pid = DestRU_Pid,
                          struct = #bloom_recon_struct{ bloom = BF },
                          stats = Stats }) ->
      %if rest interval is non empty start another sync    
      SID = rr_recon_stats:get(session_id, Stats),
  