code: public static Date calculateCplcDate(byte[] dateBytes)
  			throws IllegalArgumentException {
  		if (dateBytes == null || dateBytes.length != 2) {
  			throw new IllegalArgumentException(
  					"Error! CLCP Date values consist always of exactly 2 bytes");
  		}
  		// Check empty date
  		if (dateBytes[0] == 0 && dateBytes[1] == 0){
  			return null;
  		}
  		// current time
  		Calendar now = Calendar.getInstance();
  
  		int currenctYear = now.get(Calendar.YEAR);
  		int startYearOfCurrentDecade = currenctYear - (currenctYear % 10);
  
  		int days = 100 * (dateBytes[0] & 0xF) + 10 * (0xF & dateBytes[1] >>> 4) + (dateBytes[1] & 0xF);
  
  		if (days > 366) {
  			throw new IllegalArgumentException(
  					"Invalid date (or are we parsing it wrong??)");
  		}
  
  		Calendar calculatedDate = Calendar.getInstance();
  		calculatedDate.clear();
  		int year = startYearOfCurrentDecade + (0xF & dateBytes[0] >>> 4);
  		calculatedDate.set(Calendar.YEAR, year);
  		calculatedDate.set(Calendar.DAY_OF_YEAR, days);
  		while (calculatedDate.after(now)) {
  			year = year - 10;
  			calculatedDate.clear();
  			calculatedDate.set(Calendar.YEAR, year);
  			calculatedDate.set(Calendar.DAY_OF_YEAR, days);
  		}
  		return calculatedDate.getTime();
  	}
docs: Takes a date value as used in CPLC Date fields (represented by 2 bytes)
  
  @param dateBytes raw bytes
  @throws IllegalArgumentException when the data size is wrong
  @return the date