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).