Index: code/branches/presentation/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/presentation/src/orxonox/gamestates/GSGraphics.cc	(revision 2543)
+++ code/branches/presentation/src/orxonox/gamestates/GSGraphics.cc	(revision 2548)
@@ -107,6 +107,8 @@
         SetConfigValue(ogreLogLevelCritical_, 2)
             .description("Corresponding orxonox debug level for ogre Critical");
-        SetConfigValue(statisticsRefreshCycle_, 200000)
+        SetConfigValue(statisticsRefreshCycle_, 250000)
             .description("Sets the time in microseconds interval at which average fps, etc. get updated.");
+        SetConfigValue(statisticsAvgLength_, 1000000)
+            .description("Sets the time in microseconds interval at which average fps, etc. gets calculated.");
         SetConfigValue(defaultMasterKeybindings_, "def_masterKeybindings.ini")
             .description("Filename of default master keybindings.");
@@ -240,5 +242,5 @@
     void GSGraphics::ticked(const Clock& time)
     {
-        unsigned long long timeBeforeTick = time.getRealMicroseconds();
+        uint64_t timeBeforeTick = time.getRealMicroseconds();
         float dt = time.getDeltaTime();
 
@@ -255,14 +257,29 @@
         }
 
-        unsigned long long timeAfterTick = time.getRealMicroseconds();
-
+        uint64_t timeAfterTick = time.getRealMicroseconds();
+
+        statisticsTickInfo tickInfo = {timeAfterTick, timeAfterTick-timeBeforeTick};
+        statisticsTickTimes_.push_front( tickInfo );
         tickTime_ += (unsigned int)(timeAfterTick - timeBeforeTick);
         if (timeAfterTick > statisticsStartTime_ + statisticsRefreshCycle_)
         {
-            GraphicsEngine::getInstance().setAverageTickTime(
-                (float)tickTime_ * 0.001f / (frameCount_ - statisticsStartCount_));
-            float avgFPS = (float)(frameCount_ - statisticsStartCount_)
-                / (timeAfterTick - statisticsStartTime_) * 1000000.0;
+            while( (statisticsTickTimes_.size()!=0) && (statisticsTickTimes_.back().tickTime < timeAfterTick - statisticsAvgLength_ ) )
+                statisticsTickTimes_.pop_back();
+            std::deque<statisticsTickInfo>::iterator it = statisticsTickTimes_.begin();
+            uint32_t periodTickTime = 0;
+            unsigned int periodNrOfTicks = 0;
+            while ( it!=statisticsTickTimes_.end() )
+            {
+                periodTickTime += it->tickLength;
+                periodNrOfTicks++;
+                ++it;
+            }
+            float avgFPS = (float)periodNrOfTicks/(statisticsTickTimes_.front().tickTime - statisticsTickTimes_.back().tickTime)*1000000.0;
+            float avgTickTime = (float)periodTickTime/periodNrOfTicks/1000.0;
+            //float avgFPS = (float)statisticsTickTimes_.size()/statisticsAvgLength_*1000000.0;
             GraphicsEngine::getInstance().setAverageFramesPerSecond(avgFPS);
+            //GraphicsEngine::getInstance().setAverageTickTime( 
+              //(float)tickTime_ * 0.001f / (frameCount_ - statisticsStartCount_));
+            GraphicsEngine::getInstance().setAverageTickTime( avgTickTime );
 
             tickTime_ = 0;
Index: code/branches/presentation/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/branches/presentation/src/orxonox/gamestates/GSGraphics.h	(revision 2543)
+++ code/branches/presentation/src/orxonox/gamestates/GSGraphics.h	(revision 2548)
@@ -37,6 +37,13 @@
 #include "GSRoot.h"
 
+#include <deque>
+
 namespace orxonox
 {
+    struct statisticsTickInfo{
+        uint64_t    tickTime;
+        uint32_t    tickLength;
+    };
+    
     class _OrxonoxExport GSGraphics : public GameState<GSRoot>, public OrxonoxClass,
                                       public Ogre::WindowEventListener, public Ogre::LogListener
@@ -97,6 +104,9 @@
         unsigned long         frameCount_;
         unsigned int          statisticsRefreshCycle_;
+        unsigned int          statisticsAvgLength_;
         unsigned long long    statisticsStartTime_;
         unsigned long         statisticsStartCount_;
+        std::deque<statisticsTickInfo>
+            statisticsTickTimes_;
         unsigned int          tickTime_;
         XMLFile*              debugOverlay_;
