Maybe instead of using anglelerp in multiple events, just use it once in an every tick event with anglelerp(bar.angle, weightRight-weightLeft, dt)
And just make sure to add the weight's weight every time you pin it and subtract it every time you unpin. It looks like you got it mostly there but instead of checking for an overlap of groupBase in event 9, you rather need to check for an overlap of baseCheckL and baseCheckR individually in events 10 and 11 so you subtract the weight from the correct side.