On NaN-boxing, it's possible to put tags in the top instead of low bits - 64-bit floats have 52 bits of mantissa, 4 of which are in the top 16; though you only get 7 tags due to having to leave qNaN & infinity (8 may be possible if you can guarantee that the zero tag never has zero payload), or 4 for potentially simpler tag checks. Or, going the other direction, you can double the tag count to 14 or 16 by also using the sign, at the cost of a "<<1" in the is-float check.