anchor.diff:      runmany(fun (L) ->
   		    lists:partition(Fun, L)
   	    end,
  -	    fun ({True1, False1}, {True2, False2}) ->
  +	    {reverse, fun ({True1, False1}, {True2, False2}) ->
   		    {True1 ++ True2, False1 ++ False2}
  -	    end,
  +	    end},
   	    List, Malt).
   
   % SORTMALT needs to be tuned
  
positive.code: 				  end
  			  end
  		  end),
      Ans = try runmany(Fun, Fuse, List, Nodes, Malt)
  	  catch
  	      % we really just want the after block, the syntax
  	      % makes this catch necessary.
  
negative.code: 	    cleanup_timer(Timer)
  	  end,
      Ans;
  runmany(Fun, Fuse, List, local, Split, [{nodes, NodeList}|Malt]) ->
      Nodes = lists:foldl(fun ({Node, schedulers}, A) ->
  				X = schedulers_on_node(Node) + 1,
  				lists:reverse(lists:duplicate(X, Node), A);
  			    ({Node, X}, A) ->
  				lists:reverse(lists:duplicate(X, Node), A);
  			    (Node, A) ->
  				[Node|A]
  			end,
  			[], NodeList),
      runmany(Fun, Fuse, List, Nodes, Split, Malt);
  % local recursive fuse, for when we weren't invoked with {processes, X}
  % or {nodes, NodeList}. Degenerates recursive fuse into linear fuse.
  runmany(Fun, {recursive, Fuse}, List, local, Split, []) ->
      runmany(Fun, Fuse, List, local, Split, []);
  % by default, operate on each element seperately
  runmany(Fun, Fuse, List, Nodes, no_split, []) ->
      runmany(Fun, Fuse, List, Nodes, 1, []);
  runmany(Fun, Fuse, List, local, Split, []) ->
      List2 = splitmany(List, Split),
      local_runmany(Fun, Fuse, List2);
  runmany(Fun, Fuse, List, Nodes, Split, []) ->
      List2 = splitmany(List, Split),
      cluster_runmany(Fun, Fuse, List2, Nodes).
  
  cleanup_timer(Timer) ->
      receive
  