public boolean sendeTerminvorschlag(Termin termin) {
		Terminvorschlag vorschlag = new Terminvorschlag(termin, termine);
		Termin.TypSelektor auftritte = new Termin.TypSelektor(
				Termin.Typ.Auftritt);
		Mitglied.TypSelector ersatzmitglieder = new Mitglied.TypSelector(true);

		if (auftritte.select(termin)) {
			// Erstelle einen Zeitraum von einem Jahr vor Beginn des Auftrittes.
			Calendar calender = Calendar.getInstance();
			Date von;
			Date bis = termin.getZeitraum().getFirst();
			Zeitraum einJahr;

			calender.setTime(bis);
			calender.add(Calendar.YEAR, -1);
			von = calender.getTime();

			einJahr = new Zeitraum(von, bis);

			for (Mitglied teilnehmer : termin.getTeilnehmer()) {
				if (ersatzmitglieder.select(teilnehmer)) {
					List<Selector<Termin>> selectors = new ArrayList<Selector<Termin>>();
					selectors.add(new Termin.TypSelektor(Termin.Typ.Probe));
					selectors.add(new Termin.ZeitraumSelektor(einJahr));
					selectors.add(new Termin.TeilnehmerSelektor(teilnehmer));

					if (termine.select(selectors).count() < minProben) {
						return false; // Mindestanzahl nicht erfuellt
					}
				}
			}
		}

		for (Mitglied teilnehmer : termin.getTeilnehmer()) {
			teilnehmer.sende(vorschlag);
		}

		return true;
	}