Prm off by one

The error seemed to be caused by the `+1` on line 215, but fixing that caused other issues (which I'll report elsewhere), so I ended up refactoring the whole method. 

As mentioned briefly in the commit log, The unit test only checks whether the string matches what the users sees. Further tests (separate PR's) will cover the following:

* checking for correct arithmetic when calculating date ranges
* Fixing remaining Exeptions
* validating date ranges (eg, no negative dates)
* The picker Widget doesn't change to "View All" (blocked by work on Exceptions)
Previously we were retrieving the values only to mutate them based on what was retrieved. The outer list comprehension here is for the sake of being able to unpack them into variables in one go. That's also why I simple for loop wouldn't have worked (unless I initialized all values to None first).