anchor.diff:              end
       end,
       lists:foldl(F, [], lists:seq(Start, End)).
  +
  +causality_test(Cluster1, Cluster2) ->
  +    %% add element e to orset in one DC
  +    %% remove element e from other DC
  +    %% result set should not contain e
  +    Node1 = hd(Cluster1),
  +    Node2 = hd(Cluster2),
  +    Key = myset,
  +    %% Add two elements in DC1
  +    AddResult1 = rpc:call(Node1,
  +                           floppy, append,
  +                           [Key, riak_dt_orset, {{add, first}, act1}]),
  +    ?assertMatch({ok, _}, AddResult1),
  +    AddResult2 = rpc:call(Node1,
  +                           floppy, append,
  +                           [Key, riak_dt_orset, {{add, second}, act1}]),
  +    ?assertMatch({ok, _}, AddResult2),
  +    {ok,{_,_,CommitTime}}=AddResult2,
  +
  +    %% Remove one element from D2C
  +    RemoveResult = rpc:call(Node2,
  +                           floppy, clocksi_bulk_update,
  +                            [CommitTime,
  +                             [{update, Key, riak_dt_orset, {{remove, first}, act1}}]]),
  +    ?assertMatch({ok, _}, RemoveResult),
  +    %% Read result
  +    Result = rpc:call(Node2, floppy, read,
  +                           [Key, riak_dt_orset]),
  +    ?assertMatch({ok, [second]}, Result),
  +    lager:info("Causality test passed!"),
  +    pass.
  
positive.code:     rt:wait_until_ring_converged(Cluster2),
      simple_replication_test(Cluster1, Cluster2),
      multiple_keys_test(Cluster1, Cluster2),
      pass.
  
  simple_replication_test(Cluster1, Cluster2) ->
  
negative.code:     Result1 = multiple_reads(Node1, 1, 10, 10,CommitTime),
      ?assertEqual(length(Result1), 0),
      Result2 = multiple_reads(Node2, 1, 10, 10, CommitTime),
      ?assertEqual(length(Result2), 0),
      lager:info("Multiple key read-write test passed!"),
      pass.
  
  multiple_writes(Node, Start, End, Actor)->
      F = fun(N, Acc) ->
  