Index: modules/comment.activity.inc
===================================================================
--- modules/comment.activity.inc	(revision 1)
+++ modules/comment.activity.inc	(working copy)
@@ -38,8 +38,19 @@
 /**
  * Implementation of hook_activity_type_check().
  */
-function comment_activity_type_check($token_objects, $types) {
-  return (in_array($token_objects['node']->type, $types));
+function comment_activity_type_check($token_objects, $types) {  
+  // Don't want to log an activity too soon after the comment was first added
+  $updating_old = (time() - $token_objects['comment']->timestamp > variable_get('activity_first_update_delay', 0));
+  
+  $res = db_query("SELECT created FROM activity WHERE eid = %d AND op = 'update' AND uid = %d ORDER BY created DESC LIMIT 1", $token_objects['comment']->cid, $token_objects['user']->uid);
+  
+  // Make sure that multiple updates in a row don't log an activity
+  $no_multi = true;
+  if ($row = db_fetch_array($res)) {
+    $no_multi = (time() - $row['created'] > variable_get('activity_delay_between_updates', 0));
+  }
+  
+  return (in_array($token_objects['node']->type, $types) && ($token_objects['comment']->date == "now" || ($updating_old && $no_multi)));
 }
 
 /**
Index: modules/node.activity.inc
===================================================================
--- modules/node.activity.inc	(revision 1)
+++ modules/node.activity.inc	(working copy)
@@ -10,7 +10,18 @@
  * Implementation of hook_activity_type_check().
  */
 function node_activity_type_check($token_objects, $types) {
-  return (in_array($token_objects['node']->type, $types));
+  // Don't want to log an activity too soon after the node was first created
+  $updating_old = ($token_objects['node']->changed - $token_objects['node']->created > variable_get('activity_first_update_delay', 0));
+  
+  $res = db_query("SELECT created FROM activity WHERE nid = %d AND op = 'update' AND uid = %d ORDER BY created DESC LIMIT 1", $token_objects['node']->nid, $token_objects['user']->uid);
+  
+  // Make sure that multiple updates in a row don't log an activity 
+  $no_multi = true;
+  if ($row = db_fetch_array($res)) {
+    $no_multi = ($token_objects['node']->changed - $row['created'] > variable_get('activity_delay_between_updates', 0));
+  }
+  
+  return (in_array($token_objects['node']->type, $types) && ($token_objects['node']->is_new || ($updating_old && $no_multi)));
 }
 
 /**
Index: activity.admin.inc
===================================================================
--- activity.admin.inc	(revision 1)
+++ activity.admin.inc	(working copy)
@@ -495,6 +495,28 @@
     '#default_value' => variable_get('activity_min_count', 0),
   );
   
+  
+  $form['activity_delays'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Activity Delays'),
+  );
+  
+  $form['activity_delays']['activity_first_update_delay'] = array(
+    '#type' => 'select',
+    '#title' => t('Delay after node/comment creation'),
+    '#description' => t('This is the amount of time Activity should wait before recording updates for a node/comment after it has been created.'),
+    '#options' => drupal_map_assoc(array(0, 60, 1800, 3600, 7200, 14400, 21600, 43200, 86400, 604800), 'format_interval'),
+    '#default_value' => variable_get('activity_first_update_delay', 0),
+  );
+  
+  $form['activity_delays']['activity_delay_between_updates'] = array(
+    '#type' => 'select',
+    '#title' => t('Delay between updates'),
+    '#description' => t('This is the amount of time Activity should wait between updates before recording another one.'),
+    '#options' => drupal_map_assoc(array(0, 30, 60, 300, 600, 900, 1800, 3600, 7200), 'format_interval'),
+    '#default_value' => variable_get('activity_delay_between_updates', 0),
+  );
+  
 
   // get all the  modules and their realms
   $api_info = activity_get_module_info();
