Index: modules/taxonomy/taxonomy.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.api.php,v
retrieving revision 1.8
diff -u -p -r1.8 taxonomy.api.php
--- modules/taxonomy/taxonomy.api.php	4 Dec 2009 15:54:37 -0000	1.8
+++ modules/taxonomy/taxonomy.api.php	7 Apr 2010 16:29:48 -0000
@@ -95,6 +95,19 @@ function hook_taxonomy_term_load($terms)
 }
 
 /**
+ * Act on taxonomy terms before they are saved.
+ *
+ * Modules implementing this hook can act on the term object before it is
+ * inserted or updated.
+ *
+ * @param $term
+ *   A term object.
+ */
+function hook_taxonomy_term_presave($term) {
+  $term->foo = 'bar';
+}
+
+/**
  * Act on taxonomy terms when inserted.
  *
  * Modules implementing this hook can act on the term object when saved to
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.584
diff -u -p -r1.584 taxonomy.module
--- modules/taxonomy/taxonomy.module	6 Apr 2010 19:49:03 -0000	1.584
+++ modules/taxonomy/taxonomy.module	7 Apr 2010 16:29:49 -0000
@@ -469,6 +469,7 @@ function taxonomy_term_save($term) {
   }
 
   field_attach_presave('taxonomy_term', $term);
+  module_invoke_all('taxonomy_term_presave', $term);
 
   if (empty($term->tid)) {
     $status = drupal_write_record('taxonomy_term_data', $term);
