public void updateAsScheduled(int numUpdates) {
    //
    //  TODO:  Impose cumulative stocking limits.
    super.updateAsScheduled(numUpdates) ;
    if (! structure.intact()) return ;
    
    final float condition = (structure.repairLevel() + 1f) / 2 ;
    final float stockBonus = 1 + (stockLevels[0] / 10f) ;
    int powerGen = 5, lifeSGen = 10 ;
    powerGen *= condition ;
    lifeSGen *= condition ;
    
    if (stocks.amountOf(POWER) < powerGen * stockBonus) {
      stocks.bumpItem(POWER, powerGen * 0.2f) ;
    }
    if (stocks.amountOf(LIFE_SUPPORT) < lifeSGen * stockBonus) {
      stocks.bumpItem(LIFE_SUPPORT, lifeSGen * 0.2f) ;
    }
    
    final Service services[] = services() ;
    for (int i = 0 ; i < services.length ; i++) {
      final Service s = services[i] ;
      if (s.form != FORM_COMMODITY) continue ;
      int level = stockLevels[i / 3] ;
      stocks.forceDemand(s, level, VenueStocks.TIER_TRADER) ;
    }
  }