                     // rollback date if past end of month
                     if (dateList)
                     {
-                        tempDate = new Date(selectedDate.fullYear, newValue.data, 1);
+                        tempDate = new Date(_selectedDate.fullYear, newValue.data, 1);
                         cd = new CalendarDate(tempDate);
                         if (dateList.selectedItem.data > cd.numDaysInMonth)
                         {

                var numDaysInMonth:int = cd.numDaysInMonth;
                var listLength:int = listData.length;
                
                var minMonthMatch:Boolean = (tempDate.fullYear == minDate.fullYear
                    && tempDate.month == minDate.month);
                var maxMonthMatch:Boolean = (tempDate.fullYear == maxDate.fullYear
                    && tempDate.month == maxDate.month);
                
                for (var i:int = 0; i < listLength; i++)
                {

        if (yearList)
        {
            dateTimeFormatter.dateTimePattern = dateTimeFormatterEx.getYearPattern();
            newIndex = yearList.dataProvider.getItemIndex( generateDateItemObject(dateTimeFormatter.format(_selectedDate), _selectedDate.fullYear) );
            goToIndex(yearList, newIndex, useAnimation);
        }
        
        if (monthList)
            goToIndex(monthList, _selectedDate.month, useAnimation);
        
        if (dateList)
        {
            if (displayMode == DateSelectorDisplayMode.DATE)
            {
                goToIndex(dateList, _selectedDate.date - 1, useAnimation);
            }
            else // DATE_AND_TIME mode
            {
                newIndex = dateList.dataProvider.getItemIndex( generateDateItemObject(dayMonthDateFormatter.format(_selectedDate), _selectedDate.time) );
                goToIndex(dateList, newIndex, useAnimation);
            }
        }
        if (hourList)
        {
            newIndex = use24HourTime ? _selectedDate.hours : (_selectedDate.hours + 11) % 12;
            goToIndex(hourList, newIndex, useAnimation);
        }
        if (minuteList)
        {
            newIndex = findDateItemIndexInDataProvider(_selectedDate.minutes, minuteList.dataProvider);
            goToIndex(minuteList, newIndex, useAnimation);
        }
        if (!use24HourTime && meridianList)
        {
            newIndex = _selectedDate.hours < 12 ? 0 : 1;
            goToIndex(meridianList, newIndex, useAnimation);
        }
    }
