I remember seeing a mining calculator that I forgot to bookmark that was able to do all these things:
1. calculate mining revenue per difficulty adjust, while considering the difficulty increase % to adjust the time between adjusts. ie. 20% diff increase adjusts sooner and more often than 10%
2. set a future date as the start date
3. reduce the future difficulty adjusts by a set amount, ie. 13% next adjust, then 12, then 11, then 10 etc.
I'm currently using
http://aleks1k.github.io/bitcoin-calculator/ which is basically perfect except for missing #3. The good thing about this one is that I believe it takes real time data including how soon the upcoming adjust is.