Idea #5:
Allow disabling canonicalization via optional parameter to range constructor functions.
This would then allow using the range type,to create inclusive/inclusive integer ranges,where lower() and upper() would return what you expect.
/Joel