Entirely rewrote the +/- part. Should work better.