sval: make cast_rl() preserve things better across signed casts