This is the SQL for the current Query where Rate Change Date takes priority, and reverts to Maturity date if Rate Change is Null. Maybe this will help with a solution.
SELECT [Loan Information].[Loan ID], [Loan Information].[Call Report Type], ([Loan Information]![Master Loan Balance]+[Loan Information]![Part_ Offset_1]+[Loan Information]![Part_Offset_2])+[Loan Information]![Discount] AS [Call Report Balance], [Loan Information].[Loan Status], IIf(IsNull([Rate Change Date]),[Maturity Date],[Rate Change Date]) AS MyDateField, IIf([MyDateField]<#3/31/2010#+91,"Less than 3 M",IIf([MyDateField] Between #3/31/2010#+92 And #3/31/2010#+365,"3M - 1 Y",IIf([MyDateField] Between #3/31/2010#+366 And #3/31/2010#+1095,"1 Y - 3 Y",IIf([MyDateField] Between #3/31/2010#+1096 And #3/31/2010#+1825,"3Y - 5 Y",IIf([MyDateField] Between #3/31/2010#+1826 And #3/31/2010#+5475,"5 Y-15 Y",IIf([MyDateField]>#3/31/2010#+5475,"greater than 15 Y")))))) AS DateRange
FROM [Loan Information]
WHERE ((([Loan Information].[Call Report Type]) In (12,13,14)) AND (([Loan Information].[Loan Status])="ACTIVE")) OR ((([Loan Information].[Call Report Type]) In (12,13,14)) AND (([Loan Information].[Loan Status])="ACTIVE"));