Difficulty update (from old D to new D) consists of 2 parts:
- The update that depends on the grade. Since there are 4 grades, there are 4 possible values
- The “mean reversion” as LMSherlock calls it, which is usually small.
If we assume that 2 is negligible - and it often is - it turns out that D doesn’t change continuously and only changes by 4 discrete values.
However, this is somewhat different in the latest version of FSRS, where we added another term to D to make it approach maximum asymptotically, so that D is never exactly equal to it’s maximum allowed value. This makes the distribution smoother. I suggest using the latest rc, optimizing parameters and checking the distribution again.
Last but not least, D cannot reach 0% if you never use Easy.