I'm not sure how what you said is incompatible with waterfall/spiral. You can certainly add/remove/change requirements, but you don't start coding until you have at least a first pass on some subset of requirements.
You're right about Spiral though... Spiral is iterative, so its much more compatible.
the only way that it can not have multiple passes is if the program is thrown away after V1.0. Any successfully program will be maintained and extended.