Бинарный поиск в массиве с использованием Fortran

Я использую книгу «Схемы программирования с помощью Schaum» на языке Fortran 77, и приведен пример двоичного поиска с использованием метода группы значений в скобках. Прежде всего, вот код:

    INTEGER X(100)
    INTEGER RANGE
    INTEGER START , FINISH

    PRINT *, 'Number of values ?'
    READ *, N
    DO 10 I = 1, N
        READ *, X(I)
    END DO 

    PRINT *, 'Enter Value'
    READ *, VAL

    START =  1 
    FINISH = N
    RANGE = FINISH - START 
    MID = (START + FINISH) /2

    DO WHILE( X(MID) .NE. VAL .AND. RANGE .NE. 0)
      IF (VAL .GT. X(MID))THEN
        START = MID 
      ELSE 
        FINISH = MID
      END IF
      RANGE = FINISH - START
      MID = (START + FINISH)/2
    END DO 

    IF( X(MID) .NE. VAL) THEN
      PRINT *, VAL, 'NOT FOUND'
    ELSE
      PRINT *, 'VALUE AT' , MID
    END IF
    END

Проблема в том, что когда я ввожу массив из 7 значений, как

2 | 9 | 11 | 23 | 49 | 55 | 66

И искать 66, например, когда

MID = 5

новый MID для следующего цикла становится 6. Но когда он равен 6, он не может быть увеличен для следующего цикла, потому что

MID = (START + FINISH)/2 = (6+7)/2 = 6

Где это должно быть 7 конечно.

Это все еще на 6. И моя программа никогда не дает мне выход конечно. Что мне здесь делать?

Ответы на вопрос(1)

Ваш ответ на вопрос