diff --git a/src/Collection/Iterator/BufferedIterator.php b/src/Collection/Iterator/BufferedIterator.php
index <HASH>..<HASH> 100644
--- a/src/Collection/Iterator/BufferedIterator.php
+++ b/src/Collection/Iterator/BufferedIterator.php
@@ -15,13 +15,14 @@
 namespace Cake\Collection\Iterator;
 
 use Cake\Collection\Collection;
+use Countable;
 use SplDoublyLinkedList;
 
 /**
  * Creates an iterator from another iterator that will keep the results of the inner
  * iterator in memory, so that results don't have to be re-calculated.
  */
-class BufferedIterator extends Collection {
+class BufferedIterator extends Collection implements Countable {
 
 /**
  * The in-memory cache containing results from previous iterators
@@ -151,4 +152,24 @@ class BufferedIterator extends Collection {
 		}
 	}
 
+/**
+ * Returns the number or items in this collection
+ *
+ * @return int
+ */
+	public function count() {
+		if ($this->getInnerIterator() instanceof Countable) {
+			return $this->getInnerIterator()->count();
+		}
+
+		if (!$this->_started) {
+			$this->rewind();
+		}
+
+		while ($this->valid()) {
+			$this->next();
+		}
+
+		return $this->_buffer->count();
+	}
 }
Making BufferedIterator Countable as an optimization for the ORM