anchor.diff:      loop(S).
   
   sync_loop(From, S) ->
  -    log_loop(S, [], [], From).
  +    log_loop(S, [], [], From, 0).
  +
  +-define(MAX_LOOK_AHEAD, 64*1024).
   
   %% Inlined.
  -log_loop(S, Pids, _Bins, _Sync) when S#state.cache_error =/= ok ->
  +log_loop(S, Pids, _Bins, _Sync, _Sz) when S#state.cache_error =/= ok ->
       loop(cache_error(S, Pids));
  -log_loop(S, Pids, Bins, Sync) when S#state.messages =:= [] ->
  +log_loop(#state{messages = []}=S, Pids, Bins, Sync, Sz)
  +            when Sz > ?MAX_LOOK_AHEAD ->
  +erlang:display({rad,12}),
  +    loop(log_end(S, Pids, Bins, Sync));
  +log_loop(#state{messages = []}=S, Pids, Bins, Sync, Sz) ->
       receive 
   	Message ->
  -	    log_loop(Message, Pids, Bins, Sync, S, get(log))
  +            log_loop(Message, Pids, Bins, Sync, Sz, S, get(log))
       after 0 ->
   	    loop(log_end(S, Pids, Bins, Sync))
       end;
  -log_loop(S, Pids, Bins, Sync) ->
  +log_loop(S, Pids, Bins, Sync, Sz) ->
       [M | Ms] = S#state.messages,
       S1 = S#state{messages = Ms},
  -    log_loop(M, Pids, Bins, Sync, S1, get(log)).
  +    log_loop(M, Pids, Bins, Sync, Sz, S1, get(log)).
   
   %% Items logged after the last sync request found are sync:ed as well.
  -log_loop({alog,B}, Pids, Bins, Sync, S, L) when L#log.format =:= internal ->
  +log_loop({alog,B}, Pids, Bins, Sync, Sz, S, #log{format = internal}) ->
       %% {alog, _} allowed for the internal format only.
  -    log_loop(S, Pids, [B | Bins], Sync);
  -log_loop({balog, B}, Pids, Bins, Sync, S, _L) ->
  -    log_loop(S, Pids, [B | Bins], Sync);
  -log_loop({From, {log, B}}, Pids, Bins, Sync, S, L) 
  -                                           when L#log.format =:= internal ->
  +    log_loop(S, Pids, [B | Bins], Sync, Sz+iolist_size(B));
  +log_loop({balog, B}, Pids, Bins, Sync, Sz, S, _L) ->
  +    log_loop(S, Pids, [B | Bins], Sync, Sz+iolist_size(B));
  +log_loop({From, {log, B}}, Pids, Bins, Sync, Sz, S, #log{format = internal}) ->
       %% {log, _} allowed for the internal format only.
  -    log_loop(S, [From | Pids], [B | Bins], Sync);
  -log_loop({From, {blog, B}}, Pids, Bins, Sync, S, _L) ->
  -    log_loop(S, [From | Pids], [B | Bins], Sync);
  -log_loop({From, sync}, Pids, Bins, Sync, S, _L) ->
  -    log_loop(S, Pids, Bins, [From | Sync]);
  -log_loop(Message, Pids, Bins, Sync, S, _L) ->
  +    log_loop(S, [From | Pids], [B | Bins], Sync, Sz+iolist_size(B));
  +log_loop({From, {blog, B}}, Pids, Bins, Sync, Sz, S, _L) ->
  +    log_loop(S, [From | Pids], [B | Bins], Sync, Sz+iolist_size(B));
  +log_loop({From, sync}, Pids, Bins, Sync, Sz, S, _L) ->
  +    log_loop(S, Pids, Bins, [From | Sync], Sz);
  +log_loop(Message, Pids, Bins, Sync, _Sz, S, _L) ->
       NS = log_end(S, Pids, Bins, Sync),
       handle(Message, NS).
   
  
positive.code: 	L when L#log.mode =:= read_only ->
  	    reply(From, {error, {read_only_mode, L#log.name}}, S);
  	L when L#log.status =:= ok ->
  	    log_loop(S, From, [B], []);
  	L when L#log.status =:= {blocked, false} ->
  	    reply(From, {error, {blocked_log, L#log.name}}, S);
  	L when L#log.blocked_by =:= From ->
  
negative.code: 	    notify_owners({read_only,B}),
  	    loop(S);
  	L when L#log.status =:= ok, L#log.format =:= internal ->
  	    log_loop(S, [], [B], [], iolist_size(B));
  	L when L#log.status =:= ok ->
  	    notify_owners({format_external, B}),
  	    loop(S);
  