 			
 			if (invalidMinMax)
 				updateMinMax();
-			if (_boundsHaveChanged)
+			if (_boundsHaveChanged && hasChanged)
 				_boundsChanged.execute(this);
 		}
 

			_locked = false;
			_invalidMinMax = true;
			
			if (_dataHasChanged)
			{
				_dataHasChanged = false;
				_changed.execute(this);

			if (_localDispose)
				throw new Error('Cannot lock stream data which is already disposed.');
			
			checkReadUsage(this);
			checkWriteUsage(this);
			
			_locked = true;
