@Lunat1c
I had a bit of a go with that library,
from my understanding, when you have the setpoint at zero the controller will try to move the input towards it. If the input is 100 then the output should move to zero.
Assuming the output moves in the default direction, it will do this by reducing the output.
So from my understanding it is behaving normally.
Maybe you need to set the output sign to negative, it's in the constructor, I forgot the terminology (Direct or "something else") see the source.
Things you may need to play with are the Kp, Ki, Kd and sample time, sample time should be slow enough for the output to stabilise before the next iteration.
To tune I think you set Ki and Kd to zero and set Kp so you get a bit of overshoot.
Then just fiddle around with the others, but keep them small.
I was just playing with a small light controller circuit, it was working a bit strangely until I found what I thought are a couple of obvious bugs, they were so obvious I am worried that it is just my understanding that is at fault.
But I put in a couple of fixes and now it is nice and stable. I will email the guy who wrote it and see what he says.