Index: /trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- /trunk/FACT++/src/InterpreterV8.cc	(revision 19455)
+++ /trunk/FACT++/src/InterpreterV8.cc	(revision 19456)
@@ -10,4 +10,5 @@
 
 #include <boost/tokenizer.hpp>
+#include <boost/filesystem.hpp>
 #include <boost/algorithm/string/join.hpp>
 
@@ -745,5 +746,9 @@
         return ThrowException(String::New("File name empty."));
 
-    izstream fin(*file);
+    const auto path = boost::filesystem::path(*file);
+
+    const auto f = path.is_absolute() ? path : boost::filesystem::path(fIncludePath)/path;
+
+    izstream fin(f.string().c_str());
     if (!fin)
         return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
@@ -780,5 +785,9 @@
     HandleScope handle_scope;
 
-    izstream fin(*file);
+    const auto path = boost::filesystem::path(*file);
+
+    const auto f = path.is_absolute() ? path : boost::filesystem::path(fIncludePath)/path;
+
+    izstream fin(f.string().c_str());
     if (!fin)
         return ThrowException(String::New(errno!=0?strerror(errno):"Insufficient memory for decompression"));
@@ -2804,4 +2813,6 @@
         else
         {
+            fIncludePath = boost::filesystem::path(filename).parent_path().string();
+
             // We call script->Run because it is the only way to
             // catch exceptions.
Index: /trunk/FACT++/src/InterpreterV8.h
===================================================================
--- /trunk/FACT++/src/InterpreterV8.h	(revision 19455)
+++ /trunk/FACT++/src/InterpreterV8.h	(revision 19456)
@@ -58,4 +58,6 @@
     std::list<Database*> fDatabases;
 #endif
+
+    std::string fIncludePath;
 
 #ifdef HAVE_V8
