private void updateGambling(int numUpdates) {
    final Batch <Actor> absent = new Batch <Actor> () ;
    for (Actor a : gambleResults.keySet()) {
      if (a.aboard() != this) absent.add(a) ;
    }
    for (Actor a : absent) gambleResults.remove(a) ;
    
    if (numUpdates % POT_INTERVAL == 0) {
      Actor wins = null ;
      float bestResult = 0 ;
      for (Actor gambles : gambleResults.keySet()) {
        final float result = (Float) gambleResults.get(gambles) ;
        if (result > bestResult) { bestResult = result ; wins = gambles ; }
      }
      if (wins != null) {
        float winsShare = gamblePot * (1 - GAMBLE_MARGIN) ;
        wins.gear.incCredits(winsShare) ;
      }
      
      gamblePot = 0 ;
      gambleResults.clear() ;
    }
  }