diff --git a/includes/coder_comment.inc b/includes/coder_comment.inc
index 05610b4..53d33b5 100644
--- a/includes/coder_comment.inc
+++ b/includes/coder_comment.inc
@@ -108,6 +108,13 @@ function coder_comment_reviews() {
       '#severity' => 'minor',
       '#case-sensitive' => TRUE,
     ),
+    array(
+      '#type' => 'callback',
+      '#source' => 'comment',
+      '#value' => '_coder_comment_return_separated',
+      '#warning' => '@return should be separated from the previous comment(s) by blank line',
+      '#severity' => 'minor',
+    ),
   );
   $review = array(
     '#title' => t('Drupal Commenting Standards'),
@@ -139,3 +146,18 @@ function _coder_comment_invalid_file_block() {
   );
 }
 
+/**
+ * param comment must be separated from previous comment(s) by blank line.
+ * @see 
+ */
+function _coder_comment_return_separated(&$coder_args, $review, $rule, $lines, &$results) {
+  foreach ($lines as $line => $comment) {
+    if (preg_match('/@return/', $comment[0])
+      // Previous line is comment?
+      && array_key_exists($line - 1, $lines)
+      // If yes, it must contain only asterisk left-padded with space.
+      && !preg_match('/^ \*$/', $lines[$line - 1][0])) {
+        _coder_error($results, $rule, _coder_severity_name($coder_args, $review, $rule), $line, $lines[$line - 1][0] . "\r\n" . $comment[0]);
+    }
+  }
+}
\ No newline at end of file
