playing around the signs in ChangeQ() +/- dq, probably this is a problem of circuit direction