# hospitality.occupancy-adr-revpar
The three headline hotel figures for a period, from three totals:
- **Occupancy** = room-nights sold / room-nights available, in basis points
(7500 is 75%).
- **ADR** (average daily rate) = room revenue / room-nights sold. It is `null`
when nothing was sold, because the average of no sales is undefined, not 0.
- **RevPAR** (revenue per available room) = room revenue / room-nights
available.
## Why it is shaped this way
Each figure is divided out of the raw totals and rounded half-up once, to the
minor unit or the basis point. RevPAR is *not* worked out as ADR x occupancy:
both of those are already rounded, and multiplying rounded figures can land a
penny away from the true value. ADR x occupancy is the identity to explain
RevPAR with, not the way to compute it.
Room-nights, not rooms: a 100-room hotel over 30 nights has 3,000 room-nights
available.
## What the caller decides
The industry definitions (STR's glossary, for example) leave choices to the
operator, and this function takes the totals as given:
- whether out-of-order rooms come off the rooms available;
- whether complimentary and house-use rooms count as sold (they add nights but
no revenue, pulling ADR down);
- what counts as room revenue. Use it net of VAT, and without breakfast,
packages' food element or other extras, so figures compare across hotels.
## Errors
At least one room-night must be available; sold must be from 0 to available;
revenue must not be negative.