diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.test b/modules/field/modules/field_sql_storage/field_sql_storage.test
index f94344f..f5bbf9d 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.test
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.test
@@ -282,6 +282,57 @@ class FieldSqlStorageTestCase extends DrupalWebTestCase {
   }
 
   /**
+   * Test updating a field.
+   */
+  function testUpdateField() {
+    // We skip these tests in SQLite because it does not support precision or
+    // scale limits for floating point values.
+    // @see http://www.sqlite.org/datatype3.html
+    if (db_driver() !== 'sqlite') {
+      // Create a decimal 5.2 field.
+      $field = array('field_name' => 'decimal53', 'type' => 'number_decimal', 'cardinality' => 3, 'settings' => array('precision' => 5, 'scale' => 2));
+      $field = field_create_field($field);
+      $instance = array('field_name' => 'decimal53', 'entity_type' => 'test_entity', 'bundle' => 'test_bundle');
+      $instance = field_create_instance($instance);
+  
+      // Save values with 2, 3, and 4 decimal places.
+      $entity0 = field_test_create_stub_entity(0, 0, $instance['bundle']);
+      $entity0->decimal53[LANGUAGE_NONE][0]['value'] = '0.12';
+      $entity0->decimal53[LANGUAGE_NONE][1]['value'] = '0.345';
+      $entity0->decimal53[LANGUAGE_NONE][2]['value'] = '0.6789';
+      field_attach_insert('test_entity', $entity0);
+      $entity0 = field_test_create_stub_entity(0, 0, $instance['bundle']);
+  
+      // Verify that the field rounds to 2 decimal places.
+      field_attach_load('test_entity', array(0 => $entity0));
+      $this->assertEqual($entity0->decimal53[LANGUAGE_NONE][0]['value'], '0.12', t('2 decimal places are left alone'));
+      $this->assertEqual($entity0->decimal53[LANGUAGE_NONE][1]['value'], '0.35', t('3 decimal places are rounded to 2'));
+      $this->assertEqual($entity0->decimal53[LANGUAGE_NONE][2]['value'], '0.68', t('4 decimal places are rounded to 2'));
+  
+      // Delete the entity so we can update the field
+      field_attach_delete('test_entity', $entity0);
+  
+      // Update the field to decimal 5.3.
+      $field['settings']['scale'] = 3;
+      field_update_field($field);
+  
+      // Save values with 2, 3, and 4 decimal places.
+      $entity1 = field_test_create_stub_entity(1, 1, $instance['bundle']);
+      $entity1->decimal53[LANGUAGE_NONE][0]['value'] = '1.23';
+      $entity1->decimal53[LANGUAGE_NONE][1]['value'] = '1.456';
+      $entity1->decimal53[LANGUAGE_NONE][2]['value'] = '1.7819';
+      field_attach_insert('test_entity', $entity1);
+      $entity1 = field_test_create_stub_entity(1, 1, $instance['bundle']);
+  
+      // Verify that the updated 5.3 field rounds to 3 decimal places.
+      field_attach_load('test_entity', array(1 => $entity1));
+      $this->assertEqual($entity1->decimal53[LANGUAGE_NONE][0]['value'], '1.23', t('2 decimal places are left alone'));
+      $this->assertEqual($entity1->decimal53[LANGUAGE_NONE][1]['value'], '1.456', t('3 decimal places are left alone'));
+      $this->assertEqual($entity1->decimal53[LANGUAGE_NONE][2]['value'], '1.782', t('4 decimal places are rounded to 3'));
+    }
+  }
+
+  /**
    * Test trying to update a field with data.
    */
   function testUpdateFieldSchemaWithData() {
