The issue may be caused by the variable that you consult for checking tradeoffs. When I was looking into
fixing Sneak Attack to handle tradeoffs, I found that the variable that it used to check for overages only changed if there was already explicitly a positive tradeoff. That might be a good place to check.