Вот тут вы изменяете исходный массив. Это не то, что ожидалось от функции. Сейчас пронесло, а в будущем за такое можно и по косичкам отхватить.
Вообще, постоянные обращения к массиву - это некрасиво. Вытащите из массива значения в нормальные локальные переменные с нормальными именами и работайте уже с ними.