Node empty fields behave badly when created with Entity Metadata Wrapper
When an #empty_option is defined, it will be added as a label for the empty option in a select list. The value can be defined as well, it is keyed as #empty_value. See the documentation for form_process_select for more details. You will see that for required fields, the default #empty_value is an empty string.

That value is filtered out in _form_validate. I think it is being unset, and then when you call $ewrapper-&gt;field_area-&gt;set() you are actually passing FALSE, NULL or something else that PHP lovingly converts to an empty string.

I think you could solve it like this:

if (!empty($form_state['values']['field_area'])) {
  $ewrapper-&gt;field_area-&gt;set($form_state['values']['field_area']);
}


Or if you manually set the #empty_value to '_EMPTY': 

if ($form_state['values']['field_area'] !== '_EMPTY') {
  $ewrapper-&gt;field_area-&gt;set($form_state['values']['field_area']);
}