public static Resting nextRestingFor(Actor actor) {
    final Boardable home = actor.mind.home(), work = actor.mind.work() ;
    if (home != null && ratePoint(actor, home, 0) > 0) {
      return new Resting(actor, home) ;
    }
    if (work != null && ratePoint(actor, work, 0) > 0) {
      return new Resting(actor, work) ;
    }
    Target free = Retreat.pickWithdrawPoint(actor, 16, actor, 0.1f) ;
    if (free == null) free = actor.aboard() ;
    return new Resting(actor, free) ;
  }