diff --git a/Code/Installer/MantidLauncher/MantidLauncher.cpp b/Code/Installer/MantidLauncher/MantidLauncher.cpp
index 83b55a84f69b311175802d6aef865f3b5a4f6efe..c36f826138fcca62abedbed903b6cdab2c3e3445 100644
--- a/Code/Installer/MantidLauncher/MantidLauncher.cpp
+++ b/Code/Installer/MantidLauncher/MantidLauncher.cpp
@@ -173,6 +173,8 @@ void readFile(const wchar_t* ws,const wchar_t* fn,const string& lfn)
                           WINHTTP_NO_PROXY_NAME, 
                           WINHTTP_NO_PROXY_BYPASS, 0 );
 
+  WinHttpSetTimeouts(hSession,1000,1000,1000,1000);
+
   // Specify an HTTP server.
   if( hSession )
   {
diff --git a/Code/Installer/MantidLauncher/Release/MantidLauncher.exe b/Code/Installer/MantidLauncher/Release/MantidLauncher.exe
index 32e971b8bbab2d1104abe03d336f3dd7dbc2177d..d6f716a1738c4e056cd004d4a6ca816515519d15 100644
Binary files a/Code/Installer/MantidLauncher/Release/MantidLauncher.exe and b/Code/Installer/MantidLauncher/Release/MantidLauncher.exe differ
diff --git a/Code/Mantid/Kernel/test/LogFilterTest.h b/Code/Mantid/Kernel/test/LogFilterTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..0a550b4610487e67559ebc9d56761d2dd04d4293
--- /dev/null
+++ b/Code/Mantid/Kernel/test/LogFilterTest.h
@@ -0,0 +1,193 @@
+#ifndef LOGFILTERTEST_H_
+#define LOGFILTERTEST_H_
+
+#include <cxxtest/TestSuite.h>
+
+#include "MantidKernel/LogFilter.h"
+#include "MantidKernel/TimeSeriesProperty.h"
+#include <ctime>
+
+using namespace Mantid::Kernel;
+
+class LogFilterTest : public CxxTest::TestSuite
+{
+    TimeSeriesProperty<double>* p;
+public:
+    LogFilterTest()
+        :p(new TimeSeriesProperty<double>("test"))
+    {
+        p->addValue("2007-11-30T16:17:00",1);
+        p->addValue("2007-11-30T16:17:10",2);
+        p->addValue("2007-11-30T16:17:20",3);
+        p->addValue("2007-11-30T16:17:30",4);
+        p->addValue("2007-11-30T16:17:40",5);
+    }
+
+    void testnthValue()
+    {
+        TS_ASSERT_EQUALS( p->size(), 5 )
+        TS_ASSERT_EQUALS( p->nthValue(0), 1 )
+        TS_ASSERT_EQUALS( p->nthValue(1), 2 )
+        TS_ASSERT_EQUALS( p->nthValue(2), 3 )
+        TS_ASSERT_EQUALS( p->nthValue(3), 4 )
+        TS_ASSERT_EQUALS( p->nthValue(4), 5 )
+        TS_ASSERT_EQUALS( p->nthValue(5), 5 )
+
+        TS_ASSERT_EQUALS( p->nthInterval(0).begin_str(), "2007-Nov-30 16:17:00" )
+        TS_ASSERT_EQUALS( p->nthInterval(0).end_str(), "2007-Nov-30 16:17:10" )
+
+        TS_ASSERT_EQUALS( p->nthInterval(1).begin_str(), "2007-Nov-30 16:17:10" )
+        TS_ASSERT_EQUALS( p->nthInterval(1).end_str(), "2007-Nov-30 16:17:20" )
+
+        TS_ASSERT_EQUALS( p->nthInterval(2).begin_str(), "2007-Nov-30 16:17:20" )
+        TS_ASSERT_EQUALS( p->nthInterval(2).end_str(), "2007-Nov-30 16:17:30" )
+
+        TS_ASSERT_EQUALS( p->nthInterval(3).begin_str(), "2007-Nov-30 16:17:30" )
+        TS_ASSERT_EQUALS( p->nthInterval(3).end_str(), "2007-Nov-30 16:17:40" )
+
+        TS_ASSERT_EQUALS( p->nthInterval(4).begin_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( p->nthInterval(4).end_str(), "2007-Nov-30 16:17:44" )
+    }
+
+    void testF1()
+    {
+        TimeSeriesProperty<bool> f("1");
+        f.addValue("2007-11-30T16:16:50",true);
+        f.addValue("2007-11-30T16:17:25",false);
+        f.addValue("2007-11-30T16:17:39",true);
+
+        LogFilter flt(p);
+        flt.addFilter(&f);
+
+        TS_ASSERT_EQUALS( flt.data()->size(), 6 );
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).begin_str(), "2007-Nov-30 16:16:50" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).end_str(), "2007-Nov-30 16:17:00" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(0), 1 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).begin_str(), "2007-Nov-30 16:17:00" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).end_str(), "2007-Nov-30 16:17:10" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(1), 1 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(2).begin_str(), "2007-Nov-30 16:17:10" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(2).end_str(), "2007-Nov-30 16:17:20" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(2), 2 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(3).begin_str(), "2007-Nov-30 16:17:20" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(3).end_str(), "2007-Nov-30 16:17:25" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(3), 3 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(4).begin_str(), "2007-Nov-30 16:17:39" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(4).end_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(4), 4 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(5).begin_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(5).end_str(), "2007-Nov-30 16:17:45" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(5), 5 )
+
+    }
+
+    void testF1a()
+    {
+        TimeSeriesProperty<bool> f("1");
+        f.addValue("2007-11-30T16:16:50",false);
+        f.addValue("2007-11-30T16:17:25",true);
+        f.addValue("2007-11-30T16:17:39",false);
+
+        LogFilter flt(p);
+        flt.addFilter(&f);
+
+        TS_ASSERT_EQUALS( flt.data()->size(), 2 );
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).begin_str(), "2007-Nov-30 16:17:25" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).end_str(), "2007-Nov-30 16:17:30" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(0), 3 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).begin_str(), "2007-Nov-30 16:17:30" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).end_str(), "2007-Nov-30 16:17:39" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(1), 4 )
+
+    }
+
+    void testF12()
+    {
+        TimeSeriesProperty<bool> f("1");
+        f.addValue("2007-11-30T16:16:50",true);
+        f.addValue("2007-11-30T16:17:25",false);
+        f.addValue("2007-11-30T16:17:39",true);
+
+        TimeSeriesProperty<bool> f2("2");
+        f2.addValue("2007-11-30T16:17:05",false);
+        f2.addValue("2007-11-30T16:17:12",true);
+
+        LogFilter flt(p);
+        flt.addFilter(&f);
+        flt.addFilter(&f2);
+
+        TS_ASSERT_EQUALS( flt.data()->size(), 5 );
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).begin_str(), "2007-Nov-30 16:16:50" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).end_str(), "2007-Nov-30 16:17:05" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(0), 1 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).begin_str(), "2007-Nov-30 16:17:12" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).end_str(), "2007-Nov-30 16:17:20" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(1), 2 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(2).begin_str(), "2007-Nov-30 16:17:20" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(2).end_str(), "2007-Nov-30 16:17:25" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(2), 3 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(3).begin_str(), "2007-Nov-30 16:17:39" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(3).end_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(3), 4 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(4).begin_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(4).end_str(), "2007-Nov-30 16:17:45" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(4), 5 )
+
+    }
+
+    void testF3()
+    {
+        TimeSeriesProperty<bool> f("1");
+        f.addValue("2007-11-30T16:17:00",false);
+        f.addValue("2007-11-30T16:17:40",true);
+        f.addValue("2007-11-30T16:17:45",false);
+        f.addValue("2007-11-30T16:17:50",true);
+        f.addValue("2007-11-30T16:18:00",false);
+
+        LogFilter flt(p);
+        flt.addFilter(&f);
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).begin_str(), "2007-Nov-30 16:17:40" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(0).end_str(), "2007-Nov-30 16:17:45" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(0), 5 )
+
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).begin_str(), "2007-Nov-30 16:17:50" )
+        TS_ASSERT_EQUALS( flt.data()->nthInterval(1).end_str(), "2007-Nov-30 16:18:00" )
+        TS_ASSERT_EQUALS( flt.data()->nthValue(1), 5 )
+
+    }
+
+private:
+  std::time_t createTime_t_FromString(const std::string &str)
+  {
+    std::tm time_since_1900;
+    time_since_1900.tm_isdst = -1;
+
+    // create tm struct
+
+    time_since_1900.tm_year = atoi(str.substr(0, 4).c_str()) - 1900;
+    time_since_1900.tm_mon = atoi(str.substr(5, 2).c_str()) - 1;
+    time_since_1900.tm_mday = atoi(str.substr(8, 2).c_str());
+    time_since_1900.tm_hour = atoi(str.substr(11, 2).c_str());
+    time_since_1900.tm_min = atoi(str.substr(14, 2).c_str());
+    time_since_1900.tm_sec = atoi(str.substr(17, 2).c_str());
+
+    return std::mktime(&time_since_1900);
+  }
+};
+
+
+#endif /*LOGFILTERTEST_H_*/