private void applySex(Human actor) {
    if (gender == null) {
      final float
        rateM = ratePromotion(Background.MALE_BIRTH  , actor),
        rateF = ratePromotion(Background.FEMALE_BIRTH, actor) ;
      if (rateM * Rand.avgNums(2) > rateF * Rand.avgNums(2)) {
        gender = Background.MALE_BIRTH ;
      }
      else gender = Background.FEMALE_BIRTH ;
    }
    //
    //  TODO:  Some of these traits need to be rendered 'dormant' in younger
    //  citizens...
    applyVocation(gender, actor) ;
    float ST = Visit.clamp(Rand.rangeAvg(-1, 3, 2), 0, 3) ;
    if (Rand.index(20) == 0) ST = -1 ;
    if (gender == Background.FEMALE_BIRTH) {
      actor.traits.setLevel(GENDER, "Female") ;
      actor.traits.setLevel(FEMININE, ST) ;
    }
    else {
      actor.traits.setLevel(GENDER, "Male") ;
      actor.traits.setLevel(FEMININE, 0 - ST) ;
    }
    actor.traits.setLevel(
      ORIENTATION,
      Rand.index(10) != 0 ? "Heterosexual" :
      (Rand.yes() ? "Homosexual" : "Bisexual")
    ) ;
  }