Shouldn't we rather fix the return value? i.e. `CharPos(bpos.to_uint() - map.start_pos - total_extra_bytes)`