--- fuzzysearch/fuzzysearch.module.old	2012-02-13 15:46:52.000000000 -0700
+++ fuzzysearch/fuzzysearch.module	2012-02-13 15:54:40.000000000 -0700
@@ -1114,6 +1114,7 @@
         // found word in the center.
         $found = $start - $lead < 0 ? drupal_substr($node->body, 0, $excerpt) : drupal_substr($node->body, $start - $lead, $trail + $lead);
         if (variable_get('fuzzysearch_max_result', 0) && (strlen($newbody . $found) > variable_get('fuzzysearch_max_result', 0))) {
+          if (!$newbody && $found) $newbody = '...'.$found.'...'; // use $found section if fuzzysearch_max_result caused break on the first $found section
           break;
         }
         $newbody .= '...'. $found .'... ';
@@ -1121,11 +1122,16 @@
         $start = $section[$p];
         $trail = $lead;
       }
+
+      // If there are no result excerpts in the body, at least show the teaser.
+      $newbody = $newbody == '' ? $node->teaser : $newbody;
+      if (variable_get('fuzzysearch_max_result', 0) && strlen(strip_tags($newbody)) > variable_get('fuzzysearch_max_result', 0)) {
+        $newbody = substr(strip_tags($newbody), 0, variable_get('fuzzysearch_max_result', 0));
+      }
+
       // Wrap the found words in a <strong> tag to highlight them.
       $newbody = preg_replace('/' . $boundary . '[^' . PREG_CLASS_SEARCH_EXCLUDE . PREG_CLASS_CJK . ']*' . '(' . implode('|', $clean_words) . ')' . '[^' . PREG_CLASS_SEARCH_EXCLUDE . PREG_CLASS_CJK . ']*' . $boundary . '/iu', '<strong>\0</strong>', $newbody);
 
-      // If there are no result excerpts in the body, at least show the teaser.
-      $node->body = $newbody == '' ? $node->teaser : $newbody;
+      $node->body = $newbody;
       $results[] = $node;
 
     }
