Lo primero que veo es que tu procedimiento utiliza las variables "y", "x". Esto es muy peligroso a la hora de usarlas porque el mínimo descuido supone que el programa se ejecute de forma no deseada.