protected Date parseWFTDate(String[] words) throws MalformedDateException {
		if (!words[1].equalsIgnoreCase("EST"))
			throw new MalformedDateException("Second word \"" + words[1] + "\" not recognised in WFT date");
		
		if (words.length < 3)
			throw new MalformedDateException("Too few words in WFT date");
		
		if (words[2].matches("\\d+-\\d+")) {
			String[] years = words[2].split("-");
			Date date1 = new Date(Integer.parseInt(years[0]), 0, 0, Date.ESTIMATED);
			Date date2 = new Date(Integer.parseInt(years[1]), 0, 0, Date.ESTIMATED);
			return new DateRange(date1, date2);
		}
		
		if (words[2].matches("\\d+")) {
			return new Date(Integer.parseInt(words[2]), 0, 0, Date.ESTIMATED);
		}
			
		if (words[2].equalsIgnoreCase("BEF")) {
			Date date = new Date(Integer.parseInt(words[3]));
			return new DateRange(date, DateRange.BEFORE);
		}
		
		return null;
	}