Index: /OpenSceneGraph/trunk/include/osgGA/TrackballManipulator
===================================================================
--- /OpenSceneGraph/trunk/include/osgGA/TrackballManipulator (revision 7648)
+++ /OpenSceneGraph/trunk/include/osgGA/TrackballManipulator (revision 9896)
@@ -79,4 +79,11 @@
         double getMinimumZoomScale() const { return _minimumZoomScale; }
 
+        /** set the mouse scroll wheel zoom delta.
+          * Range -1.0 to +1.0,  -ve value inverts wheel direction and zero switches off scroll wheel. */
+        void setScroolWheelZoomDelta(double zoomDelta) { _zoomDelta = zoomDelta; }
+
+        /** get the mouse scroll wheel zoom delta. */
+        double getScroolWheelZoomDelta() const { return _zoomDelta; }
+
         /** Set the center of the trackball. */
         void setCenter(const osg::Vec3d& center) { _center = center; }
@@ -140,4 +147,5 @@
         double       _distance;
         float        _trackballSize;
+        float        _zoomDelta;
 
 };
Index: /OpenSceneGraph/trunk/src/osgGA/TrackballManipulator.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgGA/TrackballManipulator.cpp (revision 9891)
+++ /OpenSceneGraph/trunk/src/osgGA/TrackballManipulator.cpp (revision 9896)
@@ -15,4 +15,5 @@
     _distance = 1.0f;
     _trackballSize = 0.8f;
+    _zoomDelta = 0.1f;
 }
 
@@ -246,5 +247,5 @@
 bool TrackballManipulator::calcMovement()
 {
-    // mosue scroll is only a single event
+    // mouse scroll is only a single event
     if (_ga_t0.get()==NULL) return false;
 
@@ -255,5 +256,5 @@
     if (_ga_t0->getEventType()==GUIEventAdapter::SCROLL)
     {
-        dy = _ga_t0->getScrollingMotion() == osgGA::GUIEventAdapter::SCROLL_DOWN ? -0.1 : 0.1;
+        dy = _ga_t0->getScrollingMotion() == osgGA::GUIEventAdapter::SCROLL_UP ? _zoomDelta : -_zoomDelta;
         buttonMask=GUIEventAdapter::SCROLL;
     } 
