The text you are referring to is right; changing a local variable is considered a side effect.
He does not say that it is bad. This is simply not functional programming. In pure functional programming languages, you must write a loop in a recursive manner, eliminating the need for variable changes.
Recording functions like these (which have no observable side effects) are great practice in any language, it's just not functional programming.
Edit: Now I see your comment about the “bad” side effects. I would not say that the side effects are bad. In most major languages, it is difficult to program without them, and I think that many programmers think about side effects. But in large software projects, relying too much on side effects can make your life pretty miserable. Here's a good example involving singletones (the ultimate way to cause side effects)
In a language that prohibits side effects, there are fewer surprises for you as a programmer, but also for the compiler. Pure functional code is easier to parse and paralyze and, at least theoretically, easier to optimize by the compiler.
user180326
source share