diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/builtin/CastBuilderTest.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/builtin/CastBuilderTest.java
index 14bd470438b73db082a96dee6f152da748ca227b..24e9d47732f8070bc3d3abaaa840a2faead9264a 100644
--- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/builtin/CastBuilderTest.java
+++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/builtin/CastBuilderTest.java
@@ -22,6 +22,7 @@
  */
 package com.oracle.truffle.r.nodes.builtin;
 
+import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.anyValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.abstractVectorValue;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.asBoolean;
 import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.asInteger;
@@ -861,6 +862,26 @@ public class CastBuilderTest {
         Assert.assertEquals("abc", cast("abc"));
     }
 
+    @Test
+    public void testWarningInElseBranchOfMapIf() {
+        arg.mapIf(numericValue(),
+                        chain(asIntegerVector()).with(findFirst().integerElement()).end(),
+                        chain(asIntegerVector()).with(Predef.shouldBe(anyValue().not(), RError.NO_CALLER, RError.Message.NA_INTRODUCED_COERCION)).end());
+
+        Assert.assertEquals(1, cast(1));
+        Assert.assertEquals(1, cast("1"));
+        Assert.assertEquals(RError.Message.NA_INTRODUCED_COERCION.message, CastNode.getLastWarning());
+    }
+
+    @Test
+    public void testWarningInTrueBranchOfMapIf() {
+        arg.allowNull().mapIf(stringValue(), chain(asStringVector()).with(shouldBe(anyValue().not(),
+                        RError.SHOW_CALLER, RError.Message.NA_INTRODUCED_COERCION)).end(),
+                        asIntegerVector());
+        Assert.assertEquals("1", cast("1"));
+        Assert.assertEquals(RError.Message.NA_INTRODUCED_COERCION.message, CastNode.getLastWarning());
+    }
+
     /**
      * Casts given object using the configured pipeline in {@link #arg}.
      */
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/analysis/ForwardingAnalysisResult.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/analysis/ForwardingAnalysisResult.java
index 34c20fe18ab200a430ae95e695e47ab768b24bf0..353156736aef1612b6b8550f02327fc8dd858969 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/analysis/ForwardingAnalysisResult.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/casts/analysis/ForwardingAnalysisResult.java
@@ -151,6 +151,15 @@ public final class ForwardingAnalysisResult {
                             nullForwarded,
                             missingForwarded,
                             invalid);
+        } else if (Object.class == tp) {
+            return new ForwardingAnalysisResult(FORWARDED,
+                            FORWARDED,
+                            FORWARDED,
+                            FORWARDED,
+                            FORWARDED,
+                            FORWARDED,
+                            FORWARDED,
+                            invalid);
         } else {
             return this;
         }