diff --git a/scribdfield.module b/scribdfield.module
index 9de4c81..c22e1e5 100644
--- a/scribdfield.module
+++ b/scribdfield.module
@@ -116,6 +116,7 @@ function scribdfield_widget_process($element, $edit, &$form_state, $form) {
   $element['public'] = array(
     '#type' => 'checkbox',
     '#title' => t('Make uploaded file public.'),
+    '#default_value' => $element['#value']['data']['public'],
   );
 
   return $element;
@@ -210,6 +211,18 @@ function _scribdfield_node_presave(&$node, $field) {
         drupal_set_message(t('@filepath could not be uploaded to Scribd.com.', array('@filepath' => $node->{$field['field_name']}[$field_delta]['filepath'])), 'error');
       }
     }
+    // If the file has already been uploaded, make sure the access flag has been set properly
+    elseif($field_value['data']['scribd_doc_id'] > 0) {
+      $public = (boolean) $node->{$field['field_name']}[$field_delta]['public'];
+      $response = scribdfield_api_set_access($field_value['data']['scribd_doc_id'], $public);
+      // On successful change, store the returned values.
+      if (is_array($response)) {
+        $node->{$field['field_name']}[$field_delta]['data']['public'] = $public;
+      }
+      else {
+        drupal_set_message(t('The public/private flag for the document could not be set on Scribd.com.'), 'error');
+      }
+    }
   }
 }
 
@@ -247,6 +260,34 @@ function scribdfield_api_upload($filename, $public = TRUE) {
   return $api->upload($params);
 }
 
+
+/**
+ * Uses Scribd's docs.changeSettings API function to change the access setting on a document
+ *
+ * http://www.scribd.com/developers/api?method_name=docs.changeSettings
+ *
+ * @param $doc_id
+ *   Scribd document ID to change
+ * @param $public
+ *   If TRUE, make the file public on Scribd.com. If FALSE, make the file private.
+ */
+function scribdfield_api_set_access($doc_id, $public = TRUE) {
+  $params = array(
+    'api_key'   => variable_get('scribd_api_key', NULL),
+  );
+
+  // Set private access.
+  if ($public) {
+    $params['access'] = 'private';
+  }
+  else {
+    $params['access'] = 'private';
+  }
+
+  $api = _scribdfield_get_api_class();
+  return $api->changeSettings($doc_id, $params);
+}
+
 /**
  * Disabled printing after upload.
  *
