# telecoms.data-allowance
A mobile or broadband bundle for one period: how much of the allowance is
used, how much is left, and what the usage beyond it costs.
Units are the caller's, as long as all three quantities use the same one:
megabytes, kilobytes, or anything else. (Operators disagree on whether a GB
is 1000 or 1024 MB, so this capability never converts; do it once, before
calling, with the operator's own definition.)
Overage is charged in whole blocks, rounded up: with 100 MB blocks, 250 MB
over the allowance is three blocks. Use a block of 1 to charge per unit. An
optional cap limits the overage charge for the period (a customer-set spend
cap, or a regulatory bill-shock limit); `capped` says whether it bit, so the
bill can say "capped at 45.00". A charge exactly equal to the cap is not
capped.
The percentage used is rounded **down** to a basis point, so a bundle is
never shown as 100% used while there is still something left: 29,999 MB of a
30,000 MB allowance is 99.99%, not 100%. It carries on past 10000 when the
customer is over (11000 is 110%), and is null for a zero allowance, where a
percentage means nothing; pay-as-you-go usage is then all overage.
Errors: negative quantities or prices, a block size below 1, and a cap in a
different currency from the price.