I have a different point of view.
Despite the little problems that change parameters value can introduce in debugging process or code readability, it don't make sense to me call this practice as "anti-pattern".
Based on modern OO-languages design like Java or C#, I support the idea that, if it is ugly, wrong or not recommendable to change parameters values, they'd have done defined type parameters as copy of instances, rather than references.
And disagreeing with what Oded said, I think ref or out keyword should be used only in contexts where you really want to change the entire instance value, replacing it completely. To use one of this keywords just to tell "hey guy, the parameters values can change during the execution stack" sounds a little bit careless to me. What if one of your clients see the function signature and really believes that he can replace the entire thing? (in a situation that is not expected behavior).