Отлично. Реально же ошибка заключалась в том, что у тебя в начале функции не чистилась переменная pt2 и при первом запуске вероятно она была nil, а при следующем запуске она имела то значение, которое оставалось от первого запуска. Внесение этой, а так же и других переменных в список локальных переменных в частности исправил эту ситуацию, т.к. локальные переменные чистятся (т.е. их значение nil) в начале выполнения функции.