This works around a problem where multigroup fields don't get saved to the database.

diff -Nurp ../cck.orig/modules/content_multigroup/content_multigroup.node_form.inc ./modules/content_multigroup/content_multigroup.node_form.inc
--- ../cck.orig/modules/content_multigroup/content_multigroup.node_form.inc	2010-04-06 10:07:33.000000000 -0500
+++ ./modules/content_multigroup/content_multigroup.node_form.inc	2010-04-06 10:08:19.000000000 -0500
@@ -366,6 +366,22 @@ function content_multigroup_node_form_va
       // See content_multiple_value_nodeapi_validate().
       $form_state['values']['_content_ignore_required_fields'][$field_name] = TRUE;
 
+      // FIXME: why is this happening?
+      // $form_state['values'][$field_name] ends up missing sometimes and $form_state['values'][$group_name][0][$field_name] contains the actual data
+      // This is a hack/temporary-fix such that whenever this situation happens, the data ends up where it should be
+      //
+      if (!array_key_exists($field_name, $form_state['values'])){
+        foreach ($form_state['values'][$group_name] as $delta => $item) {
+          if (is_numeric($delta) && is_array($form_state['values'][$group_name][$delta]) && array_key_exists('_remove', $form_state['values'][$group_name][$delta])){
+            // In the case where '_remove' is set to 1 (TRUE), then the field is to be removed.
+            // Do not bother copying removed fields and they will be auto-deleted from the form and the database!
+            if (!$form_state['values'][$group_name][$delta]['_remove']){
+              $form_state['values'][$field_name][$delta] = $form_state['values'][$group_name][$delta][$field_name];
+            }
+          }
+        }
+      }
+
       foreach ($form_state['values'][$field_name] as $delta => $item) {
         // Ignore subgroups flagged for removal.
         if ($form_state['multigroup_removed'][$group_name][$delta]) {
