It has been my experience that after a substantial period of being in real use, methods embody tacit knowledge about the problem domain that isn't necessarily evident from their public interface. Because initially they didn't embody that, and it caused bugs, so people edited in fixes. It has been my experience that rewrites from scratch typically lose all this tacit knowledge and re-implement the original bugs.
In theory if every time a fix was implemented, a corresponding unit test was created then you should be able to adequately test the rewritten method.
I say in theory though because that never happens.