diff --git a/lib/stdlib/src/erl_stdlib_errors.erl b/lib/stdlib/src/erl_stdlib_errors.erl
index a90d6477a7ca..cf301c866ae8 100644
--- a/lib/stdlib/src/erl_stdlib_errors.erl
+++ b/lib/stdlib/src/erl_stdlib_errors.erl
@@ -772,6 +772,8 @@ format_ets_error(update_element, [_,_,ElementSpec]=Args, Cause) ->
      case Cause of
          keypos ->
              [same_as_keypos];
+	 position ->
+	     [update_op_range];
          _ ->
              case is_element_spec_top(ElementSpec) of
                  true ->
@@ -785,6 +787,26 @@ format_ets_error(update_element, [_,_,ElementSpec]=Args, Cause) ->
                      [<<"is not a valid element specification">>]
              end
      end];
+format_ets_error(update_element, [_, _, ElementSpec, Default]=Args, Cause) ->
+    TabCause = format_cause(Args, Cause),
+    ArgsCause = case Cause of
+		    keypos ->
+			 [same_as_keypos];
+		    position ->
+			[update_op_range];
+		    _ ->
+			case {is_element_spec_top(ElementSpec), format_tuple(Default)} of
+			    {true, [""]} ->
+				[range];
+			    {true, TupleCause} ->
+				["" | TupleCause];
+			    {false, [""]} ->
+				[<<"is not a valid element specification">>];
+			    {false, TupleCause} ->
+				["" | TupleCause]
+			end
+		end,
+    [TabCause, "" | ArgsCause];
 format_ets_error(whereis, _Args, _Cause) ->
     [bad_table_name];
 format_ets_error(_, Args, Cause) ->
diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl
index 73fd3df43a08..64c0ebbc7340 100644
--- a/lib/stdlib/test/ets_SUITE.erl
+++ b/lib/stdlib/test/ets_SUITE.erl
@@ -2568,6 +2568,8 @@ update_element_do(Tab,Tuple,Key,UpdPos) ->
                       %%io:format("update_element(~p)~n",[PosValArg]),
                       ArgHash = erlang:phash2({Tab,Key,PosValArg}),
                       true = ets:update_element(Tab, Key, PosValArg),
+		      [DefaultObj] = ets:lookup(Tab, Key),
+		      true = ets:update_element(Tab, make_ref(), PosValArg, DefaultObj),
                       ArgHash = erlang:phash2({Tab,Key,PosValArg}),
                       NewTuple = update_tuple(PosValArg,Tuple),
                       [NewTuple] = ets:lookup(Tab,Key),
@@ -2629,7 +2631,9 @@ update_element_neg(Opts) ->
     Bag = ets_new(bag,[bag | Opts]),
     DBag = ets_new(duplicate_bag,[duplicate_bag | Opts]),
     {'EXIT',{badarg,_}} = (catch ets:update_element(Bag,key,{2,1})),
+    {'EXIT',{badarg,_}} = (catch ets:update_element(Bag,key,{2,1},{key,0})),
     {'EXIT',{badarg,_}} = (catch ets:update_element(DBag,key,{2,1})),
+    {'EXIT',{badarg,_}} = (catch ets:update_element(DBag,key,{2,1},{key,0})),
     true = ets:delete(Bag),
     true = ets:delete(DBag),
     ok.
@@ -9515,9 +9519,20 @@ error_info(_Config) ->
          {update_element, ['$Tab', no_key, {2, new}], [no_fail]},
          {update_element, [BagTab, no_key, {2, bagged}]},
          {update_element, [OneKeyTab, one, not_tuple]},
-         {update_element, [OneKeyTab, one, {0, new}]},
+         {update_element, [OneKeyTab, one, {0, new}], [{error_term, position}]},
          {update_element, [OneKeyTab, one, {1, new}], [{error_term,keypos}]},
-         {update_element, [OneKeyTab, one, {4, new}]},
+         {update_element, [OneKeyTab, one, {4, new}], [{error_term, position}]},
+
+	 {update_element, ['$Tab', no_key, {2, new}, {no_key, old}], [no_fail]},
+	 {update_element, ['$Tab', no_key, {0, new}, {no_key, old}], [{error_term, position}]},
+	 {update_element, ['$Tab', no_key, {1, new}, {no_key, old}], [{error_term, keypos}]},
+	 {update_element, ['$Tab', no_key, {4, new}, {no_key, old}], [{error_term, position}]},
+	 {update_element, ['$Tab', no_key, {4, new}, not_tuple]},
+	 {update_element, [BagTab, no_key, {1, bagged}, {no_key, old}], []},
+	 {update_element, [OneKeyTab, no_key, {0, new}, {no_key, old}], [{error_term, position}]},
+	 {update_element, [OneKeyTab, no_key, {1, new}, {no_key, old}], [{error_term, keypos}]},
+	 {update_element, [OneKeyTab, no_key, {4, new}, {no_key, old}], [{error_term, position}]},
+	 {update_element, [OneKeyTab, no_key, {4, new}, not_tuple]},
 
          {whereis, [{bad,name}], [no_table]}
         ],