anchor.diff:  -module(dining).
  +
  +-define(EAT_TIME, 1000).
  +-define(HUNGRY_AFTER, 100).
   
   -import(lists,[foldr/3,foldl/3,filter/2,split/2,flatmap/2,map/2,seq/2]).
   
  --export([run/1,fork_loop/2,philosopher_loop/5,start_philosopher/3,report_loop/1]).
  +-export([start/1,stop/0,fork_loop/2,philosopher_loop/5,start_philosopher/3,reporter/1,main/1]).
   
   fork_loop(Available, Owner) ->
       receive
   	{take, From} when Available == true ->
   	    From ! {taken, self()},
  +	    reporter ! {taken, self()},
   	    fork_loop(false, From);
   	{take, From} when Available == false ->
   	    From ! {not_available},
   	    fork_loop(false, Owner);
   	{return, Owner} when Available == false ->
   	    Owner ! {returned, self()},
  +	    reporter ! {returned, self()},
   	    fork_loop(true, none);
   	{return, From} ->
   	    From ! {error},
  
positive.code: 	_ ->
  	    philosopher_loop(false, LeftFork, RightFork, HasLeftFork, HasRightFork)
  	after
  	    100 ->
  		LeftFirst = rand:uniform(10) < 5 ,
  		case LeftFirst of
  		      true -> LeftFork ! {take, self()};
  
negative.code: 
  philosopher_loop(true, LeftFork, RightFork, true, true) ->
      reporter ! {eating, self()},
      timer:sleep(?EAT_TIME),
      reporter ! {thinking, self()},
      RightFork ! {return, self()},
      LeftFork ! {return, self()},
  