You nailed it. If you have a good automated test suite you can make big
changes and still be confident that you didn't break anything within the
program, and that interrelationships between programs are intact, too.
I'm fortunate in that there is some leeway in this area for my small
development/maintenance group, although if I ask I know usually they'll
say no-rewrite. And we actually have a few programs that still have
program-described display file F-specs!
For many changes, it is helpful to study context. After two or three
traipses through old code, you understand it. In one recent case,
they've even titled the project a "rewrite"...
--Alan