You're right in that it's technically less than 2.1Q, but that's because there are no decimal places even to halve 1 sat at the last reward epoch. Sat is the actual unit technically, not a whole coins.
Discussion
20,999,999.9769 BTC
This is Bitcoin's (current) hard cap.
No matter what we did it'll never get to 21M, even though in the code I'm pretty sure it starts with that number, making the Bitcoin denomination exist but only to Bitcoin itself - the users' only interaction is with Satoshis.
(Take away 50BTC from the genesis block if you want the total Satoshis that were ever spendable.)