 
 void update_requirements() {
   // Requirements flow "upwards". The correct switch positions can enable
-  // routes. Enabled routes can enable the route fixation button. Enabled
-  // routes plus an enabled route fixation can enable signals.
+  // routes. Enabled routes plus an enabled route fixation can enable signals.
 
   // Requirements fulfilled by the switches.
   requirements_fulfilled[ROUTE_A1] = false;

  update_blocks();
  update_outputs();

  // Special case: signals going back to PLUS free the route fixation.
  // It also marks the related route as disallowed so that the handle
  // shows up as having to change.
  if (number == SIGNAL_A1 || number == SIGNAL_A2) {
    if (new_position == PLUS) {
      if (current_position[ROUTE_A1] == MINUS) {
        position_is_ok[ROUTE_A1] = false;
      }
      if (current_position[ROUTE_A2] == MINUS) {
        position_is_ok[ROUTE_A2] = false;
      }
      change_position(ROUTE_A_FIXATION, PLUS);
    }
  }
}



int ROUTE_A_FIXATION = 7;
int SIGNAL_A1 = 8;
int SIGNAL_A2 = 9;
int ROUTE_A_RECALL = 10;

// The two possible positions. Plus is the default, minus the actuated state.
bool PLUS = true;
bool MINUS = false;

// The states. All arrays with length 10.
const int ARRAY_SIZE = 11;
boolean current_position [ARRAY_SIZE] = { PLUS, PLUS, PLUS, PLUS, PLUS, PLUS, PLUS, PLUS, PLUS, PLUS , PLUS };
boolean blocked [ARRAY_SIZE] = { false, false, false, false, false, false, false, false, false, false, false};
boolean requirements_fulfilled [ARRAY_SIZE] = { true, true, true, false, false, false, false, false, false, false, false};
boolean position_is_ok [ARRAY_SIZE] = { true, true, true, true, true, true, true, true, true, true, true };


// Actual levers/buttons/locks.
