diff -ur apache-log4j-2.11.2-src/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java apache-log4j-2.11.2-src-nf/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
--- apache-log4j-2.11.2-src/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java	2018-11-25 21:59:38.000000000 -0700
+++ apache-log4j-2.11.2-src-nf/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java	2019-03-25 12:07:26.335889729 -0600
@@ -1572,8 +1572,13 @@
     protected Date getTimeBefore(final Date targetDate) {
         final Calendar cl = Calendar.getInstance(getTimeZone());
 
+        // CronTrigger does not deal with milliseconds, so truncate target
+        cl.setTime(targetDate);
+        cl.set(Calendar.MILLISECOND, 0);
+	final Date targetDateNoMs = cl.getTime();
+	
         // to match this
-        Date start = targetDate;
+        Date start = targetDateNoMs;
         final long minIncrement = findMinIncrement();
         Date prevFireTime;
         do {
@@ -1583,7 +1588,7 @@
                 return null;
             }
             start = prevCheckDate;
-        } while (prevFireTime.compareTo(targetDate) >= 0);
+        } while (prevFireTime.compareTo(targetDateNoMs) >= 0);
         return prevFireTime;
     }
 
