Dave Saunders pointed out in one of his blog posts that nextItem was slow, and I've since noticed the same thing.
Perhaps you can get the contents of the characters from the insertion point onwards and then iterate through them. That may actually be quicker. Or perhaps do a find operation on the text from the insertion point to the end of the story and take the first one from the returned array. I think either of these methods will be quicker than using nextItem.