 		{
 			// Commit the center item as the selectedItem
 			var centerElementIndex:int = spinnerLayout.getIndexAtVerticalCenter();
-			selectedIndex = centerElementIndex;
+            if (dispatchChangeEventOnAnimate)
+                setSelectedIndex(centerElementIndex, true);
+            else
+			    selectedIndex = centerElementIndex;
 		}
 		
 		Animate(event.currentTarget).removeEventListener(EffectEvent.EFFECT_END, animateToIndex_effectEndHandler);

	/**
	 *   Animate a spin from the current position to the new index
	 */ 
	mx_internal function animateToSelectedIndex(index:int):void
	{
		if (scroller)
		{
			var animate:Animate = scroller.snapElement(
				spinnerLayout.getUnwrappedElementIndex(index), true);
			if (animate)
				animate.addEventListener(EffectEvent.EFFECT_END, animateToIndex_effectEndHandler);
		}
	}
	

	
	private var scrollToSelection:Boolean = false;
	private var numElementsChanged:Boolean = false;
    private var dispatchChangeEventOnAnimate:Boolean = false;
	
	private function get spinnerLayout():VerticalSpinnerLayout
	{
