Problem with node revisions and taxonomy terms
I figured it out.  unset() is the answer.  Here is my code:

        $loop = 0;  

    $termarr = $form_state['values']['catagories'];
    // drupal_set_message('Termarray '. print_r($termarr,1) .'');
    foreach ($termarr as $term) {
      if ($term &gt; 0) {
        $node-&gt;field_catagories['und'][$loop] = array('tid' =&gt; $term);
      } else {
        unset($node-&gt;field_catagories['und'][$loop]);
      }
      $loop++;
    }


This took way longer than it should have.  I wish Drupal had better documentation although trial and error for days does have some benefits... :-(