Declaración no clasificable y otros errores en un IF en Fortran

Tengo el codigo:

   if i < n then
        x = topsep(1)
        y = topsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = x + dy   
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .TRUE.
    else 
        x = botsep(1)
        y = botsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = y - dy
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .FALSE.
    endif

Ambosi yn se definen como enteros y estoy dentro de un bucle paran = 1,100. Esto arroja los siguientes errores:

Error: declaración no clasificable en (1) en 'if i <n then'
Error: instrucción ELSE inesperada en (1) en 'else'
Error: Esperando la declaración END DO en (1) en el 'endif'

No puedo ver de dónde provienen estos errores, no importa cómo escriba la instrucción if (.NE. etc.) parece arrojar las mismas cosas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta