Rebuild form AFTER ajax callback has run
You could try like this making submit different and callback different and see if it helps.

$form['save'] = array(
    '#type' =&gt; 'button',
    '#submit' =&gt; array('emtr_shift_plan_form_ajax_submit'),
    '#value' =&gt; 'Save',
    '#ajax' =&gt; array(
        'callback' =&gt; 'emtr_shift_plan_form_ajax',
        'wrapper' =&gt; 'postions',
    ),
    '#id' =&gt; 'ajax-save-form-values',
);

function emtr_shift_plan_form_ajax($form, &amp;$form_state){
  return $form['positions'];
}
function emtr_shift_plan_form_ajax_submit($form, &amp;$form_state) {

    ddl('ajax submit'); // log the ajax callback is being called

    $form_state['rebuild'] = TRUE; // As the form has already been rebuilt at this point what effect can this have?!?

    emtr_shift_plan_form_save($form, $form_state); // save the values

    // This is the point at which I want the form to be rebuilt
}