diff --git a/helpers/datetime.nim b/helpers/datetime.nim
index 554016e..57af835 100644
--- a/helpers/datetime.nim
+++ b/helpers/datetime.nim
@@ -69,38 +69,30 @@ proc nextMonthlyOnWeekdayOfWeek*(weekdayString: string, ocurrence: string): Date
   let nextMonthsDate = now() + 1.months
   let weekNumStrings = @["1", "2", "3"]
   if ocurrence in weekNumStrings:
-    nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString, parseInt(ocurrence))
-  #when ocurrence == "last".
+    #nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString, parseInt(ocurrence))
+    nextSendDate = nthWeekdayInMonth(year(now()), month(now()), weekdayString, parseInt(ocurrence))
+    if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
+      nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString, parseInt(ocurrence))
   else:
-    nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString)
-  #only use next month if that day has already occured this month, otherwise adjust it for this month instead.
-  if monthDay(nextSendDate - 1.months) > monthDay(now()):
-    if ocurrence in weekNumStrings:
-      nextSendDate = nthWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString, parseInt(ocurrence))    
-    else:
-      nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString)    
+    #nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(now()), weekdayString)
+    nextSendDate = lastWeekdayInMonth(year(now()), month(now()), weekdayString)
+    if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
+      nextSendDate = lastWeekdayInMonth(year(nextMonthsDate), month(nextMonthsDate), weekdayString)
   return nextSendDate
 
 proc nextYearlyOnWeekdayOfWeekOfMonth*(weekdayString, ocurrence, monthString: string): DateTime =
-  var nextSendDate, startingDate: DateTime
-  let nextYearsDate = now() + 1.years
-  #let startingDate = dateTime(year(nextYearsDate), monthFromString(monthString), 01, 0, 0, 0, 0)
-  startingDate = dateTime(year(nextYearsDate), monthFromString(monthString), 01)
+  var nextSendDate, startingDate, nextYearsDate: DateTime
+  nextYearsDate = now() + 1.years
+  nextYearsDate = dateTime(year(nextYearsDate), monthFromString(monthString), 01)
   let weekNumStrings = @["1", "2", "3"]
   if ocurrence in weekNumStrings:
-    nextSendDate = nthWeekdayInMonth(year(startingDate), month(startingDate), weekdayString, parseInt(ocurrence))
-  #when ocurrence == "last".
+    nextSendDate = nthWeekdayInMonth(year(now()), month(now()), weekdayString, parseInt(ocurrence))
+    if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
+      nextSendDate = nthWeekdayInMonth(year(nextYearsDate), month(nextYearsDate), weekdayString, parseInt(ocurrence))
   else:
-    nextSendDate = lastWeekdayInMonth(year(startingDate), month(startingDate), weekdayString)
-  #only use next year if that month and day has already occured this year, otherwise adjust it for this year instead.
-  if nextSendDate - 1.years > now():
-    startingDate = dateTime(year(now()), monthFromString(monthString), 01)
-    let weekNumStrings = @["1", "2", "3"]
-    if ocurrence in weekNumStrings:
-      nextSendDate = nthWeekdayInMonth(year(startingDate), month(startingDate), weekdayString, parseInt(ocurrence))
-    #when ocurrence == "last".
-    else:
-      nextSendDate = lastWeekdayInMonth(year(startingDate), month(startingDate), weekdayString)
+    nextSendDate = lastWeekdayInMonth(year(now()), month(now()), weekdayString)
+    if format(nextSendDate, "yyyy-MM-dd") <= format(now(), "yyyy-MM-dd"):
+      nextSendDate = lastWeekdayInMonth(year(nextYearsDate), month(nextYearsDate), weekdayString)  
   return nextSendDate
 
 #[ Returns the next occurrence of the specified month and day, which could be: