The code that checks circ_ok against checked_in_ok comes after warning about withdrawn item so it says return has been blocked even if it hasn't
I am not sure if this is still valid, but behavior should probably take BlockReturnOfWithdrawnItems into account.