possibly fewer surprises with unsigned bitmap
use |= and &= to update conditionals, foolproof and clear

also, the bit mask is always (1 << conditional_depth)
only have 15 or 16 bits here