Apply by doing:
        cd /usr/src
        patch -p0 < 015_aty2k.patch
	cd usr.bin/at
	make
	make install

Index: usr.bin/at/at.c
===================================================================
RCS file: /cvs/src/usr.bin/at/at.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- usr.bin/at/at.c	1998/07/09 20:40:58	1.16
+++ usr.bin/at/at.c	1999/12/15 05:33:06	1.17
@@ -197,7 +197,7 @@
 
 	sigaction(SIGINT, &act, NULL);
 
-	(void)strcpy(atfile, _PATH_ATJOBS);
+	(void)strlcpy(atfile, _PATH_ATJOBS, sizeof atfile);
 	ppos = atfile + strlen(atfile);
 
 	/*
Index: usr.bin/at/parsetime.c
===================================================================
RCS file: /cvs/src/usr.bin/at/parsetime.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- usr.bin/at/parsetime.c	1999/03/21 04:04:42	1.8
+++ usr.bin/at/parsetime.c	2000/01/05 08:06:25	1.9
@@ -443,21 +443,23 @@
 	struct tm *tm;
 	int mday, mon, year;
 {
-	if (year > 99) {
-	    if (year >= TM_YEAR_BASE)
-		    year -= TM_YEAR_BASE;
-	    else
-		    panic("garbled time");
-	} else if (year != -1) {
-		/*
-		 * check if the specified year is in the next century.
-		 * allow for one year of user error as many people will
-		 * enter n - 1 at the start of year n.
-		 */
-		if (year < tm->tm_year % 100 - 1)
-			year += 100;
-		/* adjust for the year 2000 and beyond */
-		year += tm->tm_year - (tm->tm_year % 100);
+
+	/*
+	 * Convert year into tm_year format (year - 1900).
+	 * We may be given the year in 2 digit, 4 digit, or tm_year format.
+	 */
+	if (year != -1) {
+		if (year >= TM_YEAR_BASE)
+			year -= TM_YEAR_BASE;	/* convert from 4 digit year */
+		else if (year < 100) {
+			/* Convert to tm_year assuming current century */
+			year += (tm->tm_year / 100) * 100;
+
+			if (year == tm->tm_year - 1)
+				year++;		/* Common off by one error */
+			else if (year < tm->tm_year)
+				year += 100;	/* must be in next century */
+		}
 	}
 
 	if (year < 0 &&