code: @Override
  	public String getString(final FieldCase c) {
  		int size = c.getSize();
  		long date = 0;
  
  		if (size == FieldCase.JUST_BELOW_MIN) {
  			date = min - 86400000; // - 1 Tag
  		} else if (size == FieldCase.JUST_ABOVE_MAX) {
  			date = max + 86400000; // + 1 Tag
  		} else if (size < range.getMin()) {
  			date = min - random.getLong(max - min);
  		} else if (size > range.getMax()) {
  			date = max + random.getLong(max - min);
  		} else if (size == range.getMin()) {
  			date = min;
  		} else if (size == range.getMax()) {
  			date = max;
  		} else {
  			date = min + random.getLong(max - min);
  		}
  		String dateString = format.format(new Date(date));
  		if (c.isBad()) {
  			dateString = expression.negateString(dateString, c.getBad());
  		}
  		return dateString;
  	}
docs: Returns a formatted date string corresponding - depending on the field case- the earliest or
  latest allowed or an average date. {@code null} is returned for FieldCase.NULL. Apart from
  that a date object is generated that lies within the range or corresponds with the minimum or
  maximum. If {@link FieldCase#isBad()}) is {@code true} the generated date string is
  transformed into an invalid one using {@link GeneratingExpression#negateString(String, int)}.
  
  @return a date string corresponding to the passed FieldCase