diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetFunctions.java
index e8547dc985cbad602368033b7b425c51b9b78a82..c1c66e7f6d09059fe7f3a70fcc8f35dc0e766857 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GetFunctions.java
@@ -112,7 +112,7 @@ public class GetFunctions {
 
         protected Object getAndCheck(VirtualFrame frame, String x, REnvironment env, RType modeType, String modeString, boolean fail) throws RError {
             Object obj = checkPromise(frame, env.get(x), x);
-            if (obj != null && RRuntime.checkType(obj, modeType)) {
+            if (obj != null && obj != RMissing.instance && RRuntime.checkType(obj, modeType)) {
                 return obj;
             } else {
                 if (fail) {
@@ -136,7 +136,7 @@ public class GetFunctions {
                         }
                     }
                 }
-                if (r == null && fail) {
+                if ((r == null || r == RMissing.instance) && fail) {
                     unknownObject(x, modeType, modeString);
                 }
             }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
index 809ee9face9979c4f155c1da2e4172ea185a92a4..12cbdee57697a38ca4988baeaebd72f4e6ab5d7c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
@@ -120,7 +120,11 @@ public final class LocalReadVariableNode extends Node {
         }
         // special treatment for active binding: call bound function
         if (!containsNoActiveBindingAssumption.isValid() && ActiveBinding.isActiveBinding(result)) {
-            return ((ActiveBinding) result).readValue();
+            Object readValue = ((ActiveBinding) result).readValue();
+            if (readValue == RMissing.instance) {
+                return null;
+            }
+            return readValue;
         }
 
         if (forceResult) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
index 7ba6b410c2b3af05e23eac3ea4a29cc96968e07a..7fe705bfcbefc98aad3148be1e091e9ffab3e09e 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
@@ -262,7 +262,11 @@ public final class ReadVariableNode extends RBaseNode {
             result = promiseHelper.evaluate(frame, (RPromise) result);
         }
         if (isActiveBindingProfile.profile(ActiveBinding.isActiveBinding(result))) {
-            return ((ActiveBinding) result).readValue();
+            Object readValue = ((ActiveBinding) result).readValue();
+            if (readValue == RMissing.instance) {
+                throw error(mode == RType.Function ? RError.Message.UNKNOWN_FUNCTION : RError.Message.UNKNOWN_OBJECT, identifier);
+            }
+            return readValue;
         }
         return result;
     }
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 3a2a1dc162c5e7f6c790858209f562616f1f2f4e..f0f5839ca9004a20c4b3a1cb6778e9c63f1fed72 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
@@ -153818,6 +153818,32 @@ $variables
 list(k, y, z)
 
 
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#Output.IgnoreErrorContext#
+#{ .Random.seed }
+Error: object '.Random.seed' not found
+
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#Output.IgnoreErrorContext#
+#{ get('.Random.seed', envir = .GlobalEnv, inherits = FALSE) }
+Error in get(".Random.seed", envir = .GlobalEnv, inherits = FALSE) :
+  object '.Random.seed' not found
+
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#Output.IgnoreErrorContext#
+#{ get('.Random.seed', envir = .GlobalEnv, inherits = TRUE) }
+Error in get(".Random.seed", envir = .GlobalEnv, inherits = TRUE) :
+  object '.Random.seed' not found
+
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#
+#{ get0('.Random.seed', envir = .GlobalEnv, inherits = FALSE) }
+NULL
+
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#
+#{ get0('.Random.seed', envir = .GlobalEnv, inherits = TRUE) }
+NULL
+
+##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testDotRandomSeed#Output.IgnoreErrorContext#
+#{ print(.Random.seed) }
+Error in print(.Random.seed) : object '.Random.seed' not found
+
 ##com.oracle.truffle.r.test.library.stats.TestRandGenerationFunctions.testFunctions1#Output.IgnoreWhitespace#
 #set.seed(10); rsignrank(12, c(NA, NaN, 1/0, -1/0, -1, 1, 0.3, -0.6, 0.0653, 0.000123, 32e-80, 10))
  [1] NA NA  0 NA NA  1  0 NA  0  0  0 21
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestRandGenerationFunctions.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestRandGenerationFunctions.java
index 56ff6bd83d9b39bc643fd66d3b1dab532d5d6a85..7eb611414dea78ba41359db1af0bdc19ee07aec0 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestRandGenerationFunctions.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestRandGenerationFunctions.java
@@ -101,4 +101,14 @@ public class TestRandGenerationFunctions extends TestBase {
     public void testGenerators() {
         assertEval("for(gen in c(\"Buggy Kinderman-Ramage\", \"Ahrens-Dieter\", \"Box-Muller\", \"Inversion\", \"Kinderman-Ramage\", \"default\")) { print(paste0(gen, \":\")); RNGkind(NULL,gen); set.seed(42); print(rnorm(30)); }");
     }
+
+    @Test
+    public void testDotRandomSeed() {
+        assertEval(Output.IgnoreErrorContext, "{ .Random.seed }");
+        assertEval(Output.IgnoreErrorContext, "{ print(.Random.seed) }");
+        assertEval(Output.IgnoreErrorContext, "{ get('.Random.seed', envir = .GlobalEnv, inherits = FALSE) }");
+        assertEval("{ get0('.Random.seed', envir = .GlobalEnv, inherits = FALSE) }");
+        assertEval(Output.IgnoreErrorContext, "{ get('.Random.seed', envir = .GlobalEnv, inherits = TRUE) }");
+        assertEval("{ get0('.Random.seed', envir = .GlobalEnv, inherits = TRUE) }");
+    }
 }