It appears that bookings are placed on items that are marked as not for loan. This seems to be independent whether holds can be placed on an item or not (positive or negative NOT_LOAN value). There should be an option to prevent this, ideally by having a way to specify which NOT_LOAN values are acceptable for bookings (similar to SkipHoldTrapOnNotForLoanValue).
Even if bookings on not for loan items could be allowed (which might be useful for some libraries) it should be easier to see the notforloan statuses while making bookings, so that the staff member can make an informed decision about the booking.