diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/R/datetime_overrides.R b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/R/datetime_overrides.R
new file mode 100644
index 0000000000000000000000000000000000000000..d59f59e1da7eb2546ee7060458511448ccbca88b
--- /dev/null
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/R/datetime_overrides.R
@@ -0,0 +1,32 @@
+#  File src/library/base/R/datetime.R
+#  Part of the R package, http://www.R-project.org
+#
+#  Copyright (C) 1995-2014 The R Core Team
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  A copy of the GNU General Public License is available at
+#  http://www.r-project.org/Licenses/
+
+# TODO fix the problem with .POSIXct - the following implementations
+# of format are obviously wrong but it's better than raising an exception
+# whenever Sys.time() is called (and it's mostly used for printing timestamps)
+
+format.POSIXlt <- function(x, format = "", usetz = FALSE, ...)
+{
+    format.default(x)
+}
+
+format.POSIXct <- function(x, format = "", tz = "", usetz = FALSE, ...)
+{
+    format.default(x)
+}
+
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Transpose.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Transpose.java
index 2d3a4a50ec957219db31cb192e5c619fa86d8080..49cfff91db704137beebe016b2e2d9fbb5d27aa1 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Transpose.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Transpose.java
@@ -33,6 +33,7 @@ import com.oracle.truffle.r.runtime.ops.na.*;
 public abstract class Transpose extends RBuiltinNode {
 
     private final RAttributeProfiles attrProfiles = RAttributeProfiles.create();
+    private final BranchProfile hasDimNamesProfile = BranchProfile.create();
 
     private final NACheck check = NACheck.create();
 
@@ -96,6 +97,7 @@ public abstract class Transpose extends RBuiltinNode {
         RIntVector r = RDataFactory.createIntVector(result, vector.isComplete());
         r.copyAttributesFrom(attrProfiles, vector);
         r.setDimensions(newDim);
+        setDimNames(r, vector);
         return r;
     }
 
@@ -121,6 +123,7 @@ public abstract class Transpose extends RBuiltinNode {
         RDoubleVector r = RDataFactory.createDoubleVector(result, vector.isComplete());
         r.copyAttributesFrom(attrProfiles, vector);
         r.setDimensions(newDim);
+        setDimNames(r, vector);
         return r;
     }
 
@@ -146,9 +149,19 @@ public abstract class Transpose extends RBuiltinNode {
         RStringVector r = RDataFactory.createStringVector(result, vector.isComplete());
         r.copyAttributesFrom(attrProfiles, vector);
         r.setDimensions(newDim);
+        setDimNames(r, vector);
         return r;
     }
 
+    private void setDimNames(RVector newVector, RAbstractVector oldVector) {
+        RList dimNames = oldVector.getDimNames(attrProfiles);
+        if (dimNames != null) {
+            hasDimNamesProfile.enter();
+            assert dimNames.getLength() == 2;
+            newVector.setDimNames(RDataFactory.createList(new Object[]{dimNames.getDataAt(1), dimNames.getDataAt(0)}));
+        }
+    }
+
     protected static boolean isEmpty2D(RAbstractVector vector) {
         if (!vector.hasDimensions()) {
             return false;
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index cc52af6946a53429ef44271594db332ede820157..f79e687fbabbdaa6215a4e884dc929b85097d67d 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -5054,6 +5054,9 @@ character(0)
 #{ as.character(list(list(c("hello", "hi")))) }
 [1] "list(c(\"hello\", \"hi\"))"
 
+##com.oracle.truffle.r.test.library.base.TestSimpleBuiltins.testAsCharacter
+#{ x<-as.character(Sys.time()) }
+
 ##com.oracle.truffle.r.test.library.base.TestSimpleBuiltins.testAsComplex
 #{ as.complex("+.1e+2-3i") }
 [1] 10-3i
@@ -17412,6 +17415,12 @@ $a
      [,1] [,2] [,3]
 [1,]    1    2    3
 
+##com.oracle.truffle.r.test.library.base.TestSimpleBuiltins.testTranspose
+#{ x<-matrix(1:2, ncol=2, dimnames=list("a", c("b", "c"))); t(x) }
+  a
+b 1
+c 2
+
 ##com.oracle.truffle.r.test.library.base.TestSimpleBuiltins.testTriangular
 #{ m <- { matrix( (1:6) * (1+3i), nrow=2 ) } ; diag(m) <- c(1,2) ; m }
      [,1] [,2]  [,3]
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleBuiltins.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleBuiltins.java
index d8ac877e5a99c3639c6e41224c01dbb249162fc0..bbeb7660c62ea79749c697f2139c0c61c4bf943f 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleBuiltins.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleBuiltins.java
@@ -730,6 +730,8 @@ public class TestSimpleBuiltins extends TestBase {
         assertEval(Ignored.Unknown, "{ as.character(list(list(c(\"hello\", \"hi\")))) }");
         assertEval(Ignored.Unknown, "{ as.character(list(c(2L, 3L))) }");
         assertEval(Ignored.Unknown, "{ as.character(list(c(2L, 3L, 5L))) }");
+
+        assertEval("{ x<-as.character(Sys.time()) }");
     }
 
     @Test
@@ -2081,6 +2083,8 @@ public class TestSimpleBuiltins extends TestBase {
         assertEval("{ t(t(matrix(1:6, nrow=2))) }");
         assertEval("{ t(matrix(1:4, nrow=2)) }");
         assertEval("{ t(t(matrix(1:4, nrow=2))) }");
+
+        assertEval("{ x<-matrix(1:2, ncol=2, dimnames=list(\"a\", c(\"b\", \"c\"))); t(x) }");
     }
 
     //@formatter:off