         {
             switch (disabledRangeMode[i])
             {
-                case 1:
-                case 2:
-                case 3:
-                {
-                    removeRangeFromSelection(_disabledRanges[i].rangeStart,
-                                             _disabledRanges[i].rangeEnd);
+                case START_END:
+                case START_ONLY:
+                case END_ONLY:
+                {
+                    removeRangeFromSelection(addSubtractDays(_disabledRanges[i].rangeStart, -1),
+								addSubtractDays(_disabledRanges[i].rangeEnd, +1));
                     break;
                 }
 
-                case 4:
-                {
-                    removeRangeFromSelection(_disabledRanges[i],
-                                             _disabledRanges[i]);
+                case SINGLE_DATE:
+                {
+                    removeRangeFromSelection(addSubtractDays(_disabledRanges[i], -1),
+								_disabledRanges[i]);
                     break;
                 }
             }

                if (!_disabledRanges[i].rangeStart &&
                    _disabledRanges[i].rangeEnd)
                {
                    disabledRangeMode[i] = 3;
                }
                else if (_disabledRanges[i].rangeStart &&
                        !_disabledRanges[i].rangeEnd)
                {
                    disabledRangeMode[i] = 2;
                }
                else if (_disabledRanges[i].rangeStart &&
                         _disabledRanges[i].rangeEnd)
                {
                    disabledRangeMode[i] = 1;
                }
            }
        }


            if (!value.rangeStart && value.rangeEnd)
            {
                selRangeMode = END_ONLY;
                _selectableRange.rangeEnd = value.rangeEnd;
                
                if (todaysYear <= _selectableRange.rangeEnd.getFullYear())
