diff -ur commons-net-1.4.1_orig/src/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java commons-net-1.4.1/src/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
--- commons-net-1.4.1_orig/src/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java	2005-12-03 17:05:48.000000000 +0100
+++ commons-net-1.4.1/src/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java	2008-02-29 16:27:51.000000000 +0100
@@ -74,6 +74,15 @@
 		working.setTimeZone(this.getServerTimeZone());
 		ParsePosition pp = new ParsePosition(0);
 
+		// work-around for Feb 29th in leap years -- 1970, which is
+		// usually the base for the date format was no leap year,
+		// so parsing would fail
+		boolean isFeb29 = false;
+		if (timestampStr.startsWith("Feb 29")) {
+			isFeb29 = true;
+			timestampStr = "Feb 28" + timestampStr.substring(6);
+		}
+
 		Date parsed = null;
 		if (this.recentDateFormat != null) {
 			parsed = recentDateFormat.parse(timestampStr, pp);
@@ -85,6 +94,9 @@
 			if (working.after(now)) {
 				working.add(Calendar.YEAR, -1);
 			}
+			if (isFeb29) {
+				working.add(Calendar.DAY_OF_MONTH, 1);
+			}
 		} else {
 			pp = new ParsePosition(0);
 			parsed = defaultDateFormat.parse(timestampStr, pp);
