BA seem rather harsh here.
For comparison, a few years ago I had a one-way Easyjet ticket. I had to cancel because one of my relatives died / the associated funeral (which was in a third country, so I ended up booking a a new ticket on other airlines via that third country). Easyjet refunded the entire ticket when I emailed them to cancel my ticket because of the funeral. This is even their official policy (
http://www.easyjet.com/en/help/booking/making-a-change , scroll to bereavement). Admittedly this is just one datapoint.