Arduino PID Library

doesn't it cause a bit of a glitch when the output drops down from max?

I haven't noticed this. the inclusion of the (err>0) and (err<0) are supposed to (and seem to) keep this from happening

limit wind-up by not allowing the integral term to exceed the value that results in full output on its own. Is this not good enough?

the short answer is "yes." It's not as simple with the form of the pid I'm using, because I have a bias term in the mix. I'm in the process of migrating the library toward the method you describe.

Brett