In rereading this second explanation, perhaps PID will work with that controller after all.
The second command controls the speeds of the 2 wheels to create a turn.
0 stops one wheel and turns the other at 100%, 90 is straight ahead with both wheels and 180 turns the other way. I tend not to reverse the motors as I do not need to pivot.
However, "turning behavior" must be proportional to the difference from 90, i.e. 92 should result in a very large turning radius.
Then, just offset the PID output as follows. Note: I don't understand your examples of the motor control commands.
// in loop() function ...
mag_heading = wrap360(v[0] + yaw_offset); //yaw = v[0] and correct for magnetic North
// heading error and PID steering, "point_bearing" is the setpoint
error = heading_error(point_bearing, mag_heading); //wrap to +/- 180 degrees
//error is positive if current_heading > bearing (compass direction)
//if (turn > 90) acts to reduce left motor speed, bear left
int turn = 90 + (kp*error); //may need to subtract kp*error and/or include Ki, Kd
set_output(turn); //command the turn