anchor.diff:  %% A process to calculate 3 fib numbers by spawning 3 threads, sending
   %% each a message, then handling their responses to build a list of
   %% 3 values.
  -fib3parallel(N) ->
  -  P1 = spawn(?MODULE, fibThread, [self(), N]),
  -  P2 = spawn(?MODULE, fibThread, [self(), N]),
  -  P3 = spawn(?MODULE, fibThread, [self(), N]),
  +fibParallel(NumThreads, FibNum) ->
  +  _ = [spawn(?MODULE, fibThread, [self(), FibNum]) || _ <- lists:seq(1, NumThreads)],
     %% Await the replies; 3 expected. Return them.
  -  awaitfibs(3, []).
  +  awaitfibs(NumThreads, []).
   
   %% A loop to receive a certain number of messages contining fib
  -%% results, then returna list containing all the results.
  +%% results, then return a list containing all the results.
   awaitfibs(ThreadsLeft, Results) ->
     receive
  -    {From, FibN} when ThreadsLeft =:= 1 ->
  +    {_, FibN} when ThreadsLeft =:= 1 ->
         [FibN|Results];
  -    {From, FibN} ->
  +    {_, FibN} ->
         awaitfibs(ThreadsLeft - 1, [FibN|Results])
     end.
positive.code: fib(_) -> undefined.
  
  %% Three fib numbers in serial, as three values in a list.
  fib3serial(N) -> [fib(N), fib(N), fib(N)].
  
  
  
  
negative.code: -module(fibonacci).
  -export([fib/1, fibSequential/2, fibParallel/2, fibThread/2]).
  
  fib(0) -> 1;
  fib(1) -> 1;
  