--- spaces/spaces_og/spaces_og.module
+++ spaces_og.module
@@ -876,8 +876,11 @@
       $default_gid = $form['#node']->spaces_og['gid'];
     }
     else if (is_array($form['#node']->og_groups) && count($form['#node']->og_groups)) {
+      /*
       reset($form['#node']->og_groups);
       $default_gid = key($form['#node']->og_groups);
+      */
+      $default_gid = array_keys($form['#node']->og_groups_both);
     }
     else if ($space) {
       $default_gid = $space->sid;
@@ -885,7 +888,7 @@
     else {
       $default_gid = 0; // The invalid group
     }
-
+/*
     // If the current user doesn't have this group as an option,
     // they probably aren't a member here but have admin perms.
     if (!isset($valid_groups[$default_gid])) {
@@ -894,7 +897,9 @@
     // If there is a default group and the user hasn't access to
     // administer spaces/groups, disable this feature. They could
     // get burned.
-    else if (!empty($default_gid) && !user_access('administer spaces') && !user_access('administer organic groups')) {
+    else
+*/
+    if (!empty($default_gid) && !user_access('administer spaces') && !user_access('administer organic groups')) {
       $disabled = TRUE;
     }
 
@@ -918,6 +923,7 @@
         '#default_value' => $default_gid,
         '#description' => $message,
         '#element_validate' => array('spaces_og_nodeform_validate'),
+        '#multiple' => TRUE,
       );
     }
   }
@@ -1044,22 +1050,29 @@
  * API function that enforces OG group and privacy settings on a node.
  */
 function _spaces_enforce_feature($gid, &$node) {
+  if (!is_array($gid)) {
+    $gid = array($gid => $gid);
+  }
+
   $map = spaces_features_map('node');
-  $space = spaces_load('og', $gid);
-  $feature_name = $map[$node->type];
-  if ($space && $space->feature_access($feature_name)) {
-    $privacy = $space->features[$feature_name];
-    
-    switch ($privacy) {
-      case SPACES_OG_PRIVATE:
-        $node->og_public = OG_VISIBLE_GROUPONLY;
-        break;
-      case SPACES_OG_PUBLIC:
-        $node->og_public = OG_VISIBLE_BOTH;
-        break;
+
+  $privacy = OG_VISIBLE_BOTH;
+
+  while ((list($key, $id) = each($gid)) && OG_VISIBLE_GROUPONLY != $privacy) {
+    $space = spaces_load('og', $id);
+
+    $feature_name = $map[$node->type];
+    if ($space && $space->feature_access($feature_name)) {
+      $group_privacy = $space->features[$feature_name];
+
+      if (SPACES_OG_PRIVATE == $group_privacy) {
+        $privacy = OG_VISIBLE_GROUPONLY;
+      }
     }
-    $node->og_groups = array($gid => $gid);
   }
+
+  $node->og_public = $privacy;
+  $node->og_groups = $gid;
 }
 
 /**
