   // it can be thrown once (instead of through normal requirements, then it
   // would have been possible to throw it multiple times). It also enables the
   // corresponding route recall.
-  if (number == ROUTE_A_FIXATION && new_position == MINUS) {
-    requirements_fulfilled[ROUTE_A_RECALL] = true;
+  if (number == ROUTE_AP_FIXATION && new_position == MINUS) {
+    requirements_fulfilled[ROUTE_AP_RECALL] = true;
     if (current_position[ROUTE_A1] == MINUS) {
       requirements_fulfilled[SIGNAL_A1] = true;
     }

  update_single_lever_led(PIN_LED_SWITCHING_PERMISSION, SWITCHING_PERMISSION);

  update_dual_lever_led(PIN_LED_ROUTE_A, ROUTE_A1, ROUTE_A2);
  update_dual_lever_led(PIN_LED_ROUTE_BERENBACH, ROUTE_BERENBACH1, ROUTE_BERENBACH2);

  if (current_position[ROUTE_A_FIXATION] == PLUS) {
    digitalWrite(PIN_LED_ROUTE_A_FIXATION, LOW);
    digitalWrite(PIN_LED_ROUTE_A_RECALL, LOW);
  }
  else {
    digitalWrite(PIN_LED_ROUTE_A_FIXATION, HIGH);
    digitalWrite(PIN_LED_ROUTE_A_RECALL, HIGH);
  }

  // TODO: update the outgoing pins.

  }

  // Special case: route recall frees the route fixation.
  if (number == ROUTE_AP_RECALL) {
    // Any new position is OK, we don't care which way the lock is turned.
    change_position(ROUTE_AP_FIXATION, PLUS);
  }

  // Special case: signals going back to PLUS remove their own "requirements
