Claro pitoloko! Se va al :1 porque aunque se cumpla la primera condición no escribiste nada al final que te lleve la ejecución al inicio de nuevo. Así pues, cuando termina de procesar ese código se sale del IF, omite el ELSE y sigue con la línea siguiente, la cual, como ves, es el :1.
[esto se cumple y sigue de largo, no se devuelve]
)
:1
[código]
Tendrías que usar una etiqueta inicial para devolverte en caso de que se cumpla tu sentencia, que es lo que entendí deseas hacer. Tendrías que agregarle algo así:
:Inicio
[código]
)
:1
[código]
De ese modo el código de :1 no se ejecuta a menos que no se cumpla la primera condición, pues entraría en ELSE que llama a :1.
Deja tus comentarios a ver si te sirvió.