I'm making some progress, but this could take a while. Basically, you'll get different "answers" depending on the relative position(s) of the affected vertices. So, for example, if you add a new vertex between vertices 1 and 2 and move vertex 4, you may get a different result than if you moved vertex 0. Believe it or not, this logic has been well (but, obviously not well-enough) tested with objects containing 30 vertices and, without exception, performed flawlessly. There is also the x/y issue noted by Tom which I have found and corrected. I may have introduced that one about a week ago.
As for the exception you experienced, George, for the moment at least, I suspect it to be the same cause. Sometimes vertices get ignored, so I can envisage that, sometimes, indices will get corrupted.
(This is what happens when you try to be "everything to everybody".)
It will be fixed ASAP.
Don