anchor.diff:  %% Number of snapshots to keep after GC
   -define(SNAPSHOT_MIN, 3).
   %% Number of ops to keep before GC
  --define(OPS_THRESHOLD, 50).
  +-define(OPS_THRESHOLD, 25).
   %% The first 3 elements in operations list are meta-data
   %% First is the key
   %% Second is a tuple {current op list size, max op list size}
  
positive.code:     {ok, ReadOld} = internal_read(Key, Type, vectorclock:from_list([{DC1,16}]), ignore, OpsCache, SnapshotCache),
      ?assertEqual(1, Type:value(ReadOld)).
  
  
  multipledc_write_test() ->
      OpsCache = ets:new(ops_cache, [set]),
      SnapshotCache = ets:new(snapshot_cache, [set]),
  
negative.code:     NewId = ets:update_counter(OpsCache, Key,
  			       {3,1}),
      {Length,ListLen} = ets:lookup_element(OpsCache, Key, 2),
      %% Perform the GC incase the list is full, or every ?OPS_THRESHOLD operations (which ever comes first)
      case ((Length)>=ListLen) or ((NewId rem ?OPS_THRESHOLD) == 0) of
          true ->
              Type=DownstreamOp#clocksi_payload.type,
              SnapshotTime=DownstreamOp#clocksi_payload.snapshot_time,
              {_, _} = internal_read(Key, Type, SnapshotTime, ignore, OpsCache, SnapshotCache, true),
  	    %% Have to get the new ops dict because the interal_read can change it
  	    {Length1,ListLen1} = ets:lookup_element(OpsCache, Key, 2),
  	    true = ets:update_element(OpsCache, Key, [{Length1+?FIRST_OP,{NewId,DownstreamOp}}, {2,{Length1+1,ListLen1}}]);
          false ->
  	    true = ets:update_element(OpsCache, Key, [{Length+?FIRST_OP,{NewId,DownstreamOp}}, {2,{Length+1,ListLen}}])
      end.
  