anchor.diff:  -behaviour(gen_server).
   
   -define(EVENT_PAGE_SIZE, 100).
  --define(WRITE_BUFFER, 64 * 1024).
  --define(BUFFER_TIMEOUT, 2000).
  +-define(EVENT_BUFFER_SIZE, 1000).
  +-define(EVENT_BUFFER_TIMEOUT, 2000).
   
   -export([event/4, event/5, event/6]).
   -export([start_link/0, stop/0, init/1, handle_call/3, handle_cast/2, 
  
positive.code:                 
                  {ok, Root} = application:get_env(disco_root),
                  FName = filename:join([Root, disco_server:jobhome(JobName), "events"]),
                  {ok, F} = file:open(FName, [append,
                          {delayed_write, ?WRITE_BUFFER, ?BUFFER_TIMEOUT}]),
                  ets:insert(event_files, {JobName, F}),
  
                  {noreply, add_event(Host, JobName, M, P, {Events, MsgBuf})}
          end;
  
negative.code: handle_cast({job_done, JobName}, {Events, MsgBuf} = S) ->
          case ets:lookup(event_files, JobName) of
                  [] -> ok;
                  [{_, EventProc}] ->
                          EventProc ! done,
                          ets:delete(event_files, JobName)
          end,
          case dict:find(JobName, MsgBuf) of
  