The repairs were a profit center, and the labor I was billing was keeping the utilities turned on, buying replacement tools, consumables, paying for my lunch break, covering rework, a hedge against me injuring myself, paying for the shop van I used to run inventory between stores, paying taxes, business licenses, my manager's salary, the owner's salary, paying for Bob to wander over and consult on a repair I wasn't sure about, paying the interest payments on the loans, and covering the loss leaders that got us repeat customers who needed repairs in the first place. Things like trade-ins and entry level equipment.
At your programming job, every manager above you in the chain, every support team that you use to get your work done are all being paid out of the money billed for you. Yes you may be writing $1M in software a year, but the company wouldn't exist and you wouldn't have any sales without those other people, so all of that overhead gets subtracted from your value. Ironically and possibly painfully, a company can exist for months without a single programmer, but it can't exist long without a management chain.