diff --git a/lib/ansible/runner.py b/lib/ansible/runner.py
index e7de296b431..c7558086d9c 100644
--- a/lib/ansible/runner.py
+++ b/lib/ansible/runner.py
@@ -456,8 +456,11 @@ class Runner(object):
         (result2, err2, executed2) = self._execute_module(conn, tmp, module, args)
         results2 = self._return_from_module(conn, conn.host, result2, err2, executed)
         (host, ok, data2, err2) = results2
-        new_changed = data2.get('changed', False)
-        data.update(data2)
+        if ok:
+            new_changed = data2.get('changed', False)
+            data.update(data2)
+        else:
+            new_changed = False
         if old_changed or new_changed:
             data['changed'] = True
         return (host, ok, data, "%s%s"%(err,err2))