End of current plan year
This is the recommended expression for rounding dates to the end of the current plan year:
EOY_DT:= #ENDMTH (2 #LSTBUSDAY A_DT) &
; find the last business day of the current plan year, then round that last business day
; to the end of the month (i.e., last day of the plan year)
A_DT may be either a single date (e.g., 7/16/2015, DOH, #DODEC) or an array of dates (e.g., #DATE).
We start with #LSTBUSDAY because it's the easiest way to work with plan years, but then we need to use #ENDMTH to guarantee that we are at the end of the current plan year. 2 #LSTBUSDAY A_DT finds the last business day of the current plan year, which is one of the last 3 days of the current plan year, depending on whether the last day of the current plan year is a weekday, Sunday or Saturday. Then, #ENDMTH converts it to the last day of the month (i.e., the last day of the plan year).
If you have already have calculated the beginning of the next plan year for each date in A_DT (e.g., stored in BOY1_DT), then simply subtracting 1 day gives you the end of the current plan year:
EOY_DT:= BOY1_DT - 1 &