   PROCEDURE [INLINE] osp$add_to_locked_variable (VAR variable:{Input, Output} integer;
         initial_best_guess: integer;
         amount_to_add: integer;
     VAR actual: integer);

    VAR
      initial: integer,
      result: 0 .. 2;

    initial := initial_best_guess;
  /swap_in_addition/
    REPEAT
      #compare_swap (variable, initial, initial + amount_to_add, initial, result);
    UNTIL result = 0;
    actual := initial + amount_to_add;
  PROCEND osp$add_to_locked_variable;
