I don't think a brain is necessary, just a macro tied to an M-code, let us say M684.
Let us also assume from the start that your boring bar axis is 'C' and that you only ever move the C axis on its own.
You would use the M code to move your C axis and reset your Z axis.
This is where I am on thin ice as I do not know if it is possible to pass a parameter to a macro (e.g. by saying M684 C20.040). Also, I'm not sure if I've used the correct DRO numbers.
Pseudo code:
While IsMoving() ' anything in motion?
Sleep (100) ' wait a bit
Wend
tempvariable=GetOEMDRO (805) ' current C axis value
StraightFeed (new_value_of_C) 'parameter passed when macro is called - do not know if this is possible
While IsMoving() ' anything in motion?
Sleep (100) ' wait a bit
Wend
change_in_C=GetOEMDRO (805) - tempvariable
change_in_Z= change_in_C * fiddle_factor
SetOEMDRO(808, change_in_Z)
Hopefully someone more experienced will chime in...