anchor.diff:    MonitorState2 = increment_running_fsm_id(MonitorState1),
   % evaluate_block([X|XS], PrevIndex, EndIndex, FSMState, MonitorState) ->
   
  -  ScopeEndIndex = block_size(Block),
  +  ScopeEndIndex = block_size(Block) + 2,
     EvalRes = evaluate_block(Block, 0, ScopeEndIndex, FSMState1, MonitorState2),
     case EvalRes of
       {FSMState2, MonitorState3} ->
  -      % FSMState3 = add_state(end_state(), FSMState2),
  -      {ok, update_nested_fsm(FSMID, FSMState2, MonitorState3)};
  +      FSMState3 = add_state(end_state(), FSMState2),
  +      {ok, update_nested_fsm(FSMID, FSMState3, MonitorState3)};
       Other -> Other % Various monitor errors
     end.
   
  
positive.code: 
  % Takes top-level scope AST, FSM state and monitor state.
  % Returns ID of top node, new FSM state, new monitor state.
  evaluate_scope({local_protocol, _, _, _, _, Block}, _PrevIndex, FSMState,
                 MonitorState) ->
    ScopeEndIndex = instruction_size(Block),
    {FSMState1, MonitorState1} = evaluate_block(Block, 0, ScopeEndIndex, FSMState, MonitorState),
    FSMState2 = add_state(standard_state(), FSMState1),
    {FSMState2, MonitorState1};
  evaluate_scope(Choice = {choice, _, ChoiceBlocks}, PrevIndex,
                 FSMState, MonitorState) ->
    RunningID = get_running_id(FSMState),
    io:format("RunningID: ~p~nChoice instruction size: ~p~n", [RunningID, instruction_size(Choice)]),
    ScopeEndIndex = RunningID + instruction_size(Choice),
    {FSMState1, MonitorState1} = evaluate_blocks(ChoiceBlocks, PrevIndex,
                                                 ScopeEndIndex, FSMState, MonitorState),
    % Now, we need a state at ScopeEndIndex (which *should* be RunningID)
    % This is one place bugs could creep in...
    FSMState2 = add_state(standard_state(), FSMState1),
    {FSMState2, MonitorState1}.
  
  
negative.code: instruction_size({choice, _, Choices}) ->
    % Final transition in the choice block goes to the end index
    BasicSize = lists:foldl(fun(ChoiceBlock, Sum) -> Sum + (block_size(ChoiceBlock) - 1) end, 0, Choices),
    BasicSize;
  instruction_size({rec, _, Block}) -> 1 + block_size(Block);
  instruction_size({par, _ParallelBlocks}) -> 1; % Nested FSMs have their own internal numbering system
  instruction_size({local_interruptible, _, InterruptibleBlock, _}) -> % Not supported.
  