diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp
index 51d1f79b2..b7480cc3c 100644
--- a/apps/openmw/engine.cpp
+++ b/apps/openmw/engine.cpp
@@ -51,8 +51,9 @@ bool OMW::Engine::frameStarted(const Ogre::FrameEvent& evt)
     // global scripts
     mEnvironment.mGlobalScripts->run (mEnvironment);
 
-    // passing of time (30 times as fast as RL time)
-    mEnvironment.mWorld->advanceTime ((mEnvironment.mFrameDuration*30)/3600);
+    // passing of time
+    mEnvironment.mWorld->advanceTime (
+        mEnvironment.mFrameDuration*mEnvironment.mWorld->getTimeScaleFactor()/3600);
 
     return true;
 }
diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp
index f93b81890..301111d06 100644
--- a/apps/openmw/mwworld/world.cpp
+++ b/apps/openmw/mwworld/world.cpp
@@ -358,4 +358,9 @@ namespace MWWorld
     {
         mSkyManager->setMoonColour (red);   
     }
+    
+    float World::getTimeScaleFactor() const
+    {
+        return mGlobalVariables->getInt ("timescale");
+    }
 }
diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp
index 2873a69d1..d94e9d766 100644
--- a/apps/openmw/mwworld/world.hpp
+++ b/apps/openmw/mwworld/world.hpp
@@ -103,6 +103,8 @@ namespace MWWorld
             int getSecundaPhase() const;
             
             void setMoonColour (bool red);
+            
+            float getTimeScaleFactor() const;
     };
 }