Primero que nada, tu código tiene errores de sintaxis, concretamente le faltan un par de punto y coma y una comilla, pero eso lo puedes detectar simplemente compilando el código.
Sobre tu problema específico el error es evidente (bueno, al menos para mí), todas las comparaciones que haces son incorrectas. Por ejemplo, cuando dice que ingresas un 8 y te sale por el else del último if cuando debería hacerse verdadero este if
if (nf=6.5) and (nf<8.5) then
¿cierto?. Falso. 8 sí es menor a 8.5 PERO no es igual a 6.5, por lo tanto la condición "and" no se cumple y por lo tanto sale por el else de ese if. Que aparezca el último mensaje se debe a que ese último "else" funciona como un "catch all", es decir "si no se cumple ninguna de las anteriores entonces se cumple esta.
Para el caso de que ingreses un 5. Llega a este if:
if (nf=5) and (nf<6.5) then
5 es menor a 6.5 Y ADEMÁS es igual a 5, por eso sí se cumple la condición "and".
La solución consiste en cambiar todos los iguales (=) igual o por mayor (=>) así:
if (nf=>5) and (nf<6.5) then
De esa forma estás preguntando si "nf" está entre los valores indicados en el intervalo [5,6.5) (intervalo abierto por la derecha).