diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index f21fcbab0f46ed6970daa881194134e173f586f9..57ab0cde3cb5f25a730212523150f73a83ecec13 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -3,6 +3,7 @@
 Feeds 6.x 1.0 xxxxxxxxxxxxxxxxxxxx
 ----------------------------------
 
+- #653412 rbrandon: Do not create items older than expiry time.
 - #725392 nicholasThompson: FeedsBatch does not check feeds folder exists before
   uploading.
 - #776972 lyricnz: Messages use plural when describing single item.
diff --git a/plugins/FeedsDataProcessor.inc b/plugins/FeedsDataProcessor.inc
index d49355b9c77239345a44232fdbcfaee50c5d5395..ddc03860714999819354c5b745996c3e6a99a6db 100644
--- a/plugins/FeedsDataProcessor.inc
+++ b/plugins/FeedsDataProcessor.inc
@@ -18,6 +18,7 @@ class FeedsDataProcessor extends FeedsProcessor {
 
     // Count number of created and updated nodes.
     $inserted  = $updated = 0;
+    $expiry_time = $this->expiryTime();
 
     while ($item = $batch->shiftItem()) {
       if (!($id = $this->existingItemId($item, $source)) || $this->config['update_existing']) {
@@ -27,6 +28,11 @@ class FeedsDataProcessor extends FeedsProcessor {
         $data['timestamp'] = FEEDS_REQUEST_TIME;
         $data = $this->map($item, $data);
 
+        // Only save if this item is not expired.
+        if ($expiry_time != FEEDS_EXPIRE_NEVER && $data['timestamp'] < (FEEDS_REQUEST_TIME - $expiry_time)) {
+          continue;
+        }
+
         // Save data.
         if ($id) {
           $data['id'] = $id;