Just a thought, to be sure you're don't run into order precendence issues, surround your main comparisons in their own parenthesis to avoid confusion.
( (oldDest[0] != destination[0]) || (oldDest[1] != destination[1]) )
You want it to update the location when new coordinates are given, otherwise you want it to sit there and wait. Try the parenthesis first and see if it's not precendence related first.
If there's the possibility that your two locals are going out of scope try making them static to see if that keeps oldDest valid from wait to wait.