diff --git a/include/strings.cpp b/include/strings.cpp
index a4b34af8e..639c459ec 100755
--- a/include/strings.cpp
+++ b/include/strings.cpp
@@ -667,11 +667,14 @@ const TFilename& TFilename::tempdir()
 
 #ifndef FOXPRO  
 
-    const TString& user = TApplication::user();
+    TString user = TApplication::user();
+
+    user.lower();
     if (res == 0 && user.not_empty())
     {                
+      if (_tempdir.find(user) < 0)
 #if XVT_OS==XVT_OS_SCOUNIX
-      _tempdir << '/' << user;
+        _tempdir << '/' << user;
 #else
       _tempdir << '\\' << user;
 #endif      
@@ -1037,4 +1040,4 @@ int TString_array::add(const TToken_string& s, int n)
   else 
     row(n) = s;
   return n;
-}
\ No newline at end of file
+}
diff --git a/include/strings.h b/include/strings.h
index 630b772c2..cb03dcaf4 100755
--- a/include/strings.h
+++ b/include/strings.h
@@ -281,6 +281,7 @@ protected:
 public:
   TParagraph_string(const char* s, int width);
   const TString& operator =(const char* s);
+  const TString& operator =(const TString & s) { return operator=((const char *) s);}
   void set_width(int width) { _width = width; }
 };