anchor.diff:      lager:info("Tx1 sent prepare, got message: ~p", [CommitTime]),
       lager:info("Tx1 aborted. Test passed!"),
       ok.
  +
  +%% Read an udpate a key multiple times
  +clocksi_multiple_read_update_test(Nodes) ->
  +    Node = hd(Nodes),
  +    _Key = get_random_key(),
  +    Key = newkey,
  +    NTimes = 100,
  +    Result1 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    lists:foreach(fun(_)->
  +                          read_update_test(Node, Key) end, 
  +                  lists:seq(1,NTimes)),
  +    Result2 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    ?assertEqual(Result1+NTimes, Result2),
  +    ok.
  +
  +read_update_test(Node, Key) ->
  +    Result1 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    {ok,_} = rpc:call(Node, floppy, clocksi_bulk_update,
  +                      [now(), [{update, Key, {increment,a}}]]),
  +    Result2 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    ?assertEqual(Result1+1,Result2).
  +
  +
  +get_random_key() ->
  +    random:seed(now()),
  +    random:uniform(100).
  
positive.code:     CommitTime=rpc:call(FirstNode, floppy, clocksi_iprepare, [TxId]),
      ?assertMatch({ok, _}, CommitTime),
      lager:info("Tx1 sent prepare, got commitTime=..., id : ~p", [CommitTime]),
  
      %% start a different tx and try to read key read_wait_test.
      {ok,TxId1}=rpc:call(LastNode, floppy, clocksi_istart_tx, [now()]),
  
      lager:info("Tx2 Started, id : ~p", [TxId1]),
      lager:info("Tx2 Reading..."),
  
negative.code: -module(clock_si).
  -export([confirm/0, clockSI_test1/1, clockSI_test2/1,
           clockSI_test_read_wait/1, clockSI_test4/1, clockSI_test_read_time/1,
           clockSI_test_certification_check/1,
           clockSI_multiple_test_certification_check/1, spawn_read/3]).
  