diff --git a/src/Plugin/search_api/processor/AggregatedFields.php b/src/Plugin/search_api/processor/AggregatedFields.php
index 13c4c4c..0e6d948 100644
--- a/src/Plugin/search_api/processor/AggregatedFields.php
+++ b/src/Plugin/search_api/processor/AggregatedFields.php
@@ -101,6 +101,11 @@ class AggregatedFields extends ProcessorPluginBase {
             $values = array(reset($values));
           }
           break;
+        case 'last':
+          if ($values) {
+            $values = array(end($values));
+          }
+          break;
       }
 
       // Do not use setValues(), since that doesn't preprocess the values
diff --git a/src/Plugin/search_api/processor/Property/AggregatedFieldProperty.php b/src/Plugin/search_api/processor/Property/AggregatedFieldProperty.php
index bfbc697..7408b9d 100644
--- a/src/Plugin/search_api/processor/Property/AggregatedFieldProperty.php
+++ b/src/Plugin/search_api/processor/Property/AggregatedFieldProperty.php
@@ -147,6 +147,7 @@ class AggregatedFieldProperty extends ConfigurablePropertyBase {
           'max' => $this->t('Maximum'),
           'min' => $this->t('Minimum'),
           'first' => $this->t('First'),
+          'last' => $this->t('Last'),
         );
 
       case 'description':
@@ -158,6 +159,7 @@ class AggregatedFieldProperty extends ConfigurablePropertyBase {
           'max' => $this->t('The Maximum aggregation computes the numerically largest contained field value.'),
           'min' => $this->t('The Minimum aggregation computes the numerically smallest contained field value.'),
           'first' => $this->t('The First aggregation will simply keep the first encountered field value.'),
+          'last' => $this->t('The Last aggregation will simply keep the last encountered field value.'),
         );
 
     }
diff --git a/tests/src/Unit/Plugin/Processor/AggregatedFieldsTest.php b/tests/src/Unit/Plugin/Processor/AggregatedFieldsTest.php
index e8570ad..66b5444 100644
--- a/tests/src/Unit/Plugin/Processor/AggregatedFieldsTest.php
+++ b/tests/src/Unit/Plugin/Processor/AggregatedFieldsTest.php
@@ -182,8 +182,13 @@ class AggregatedFieldsTest extends UnitTestCase {
       $this->processor->addFieldValues($item);
     }
 
-    $this->assertEquals(array_map($this->valueCallback, $expected[0]), $items[$this->itemIds[0]]->getField($this->fieldId)->getValues(), 'Correct aggregation for item 1.');
-    $this->assertEquals(array_map($this->valueCallback, $expected[1]), $items[$this->itemIds[1]]->getField($this->fieldId)->getValues(), 'Correct aggregation for item 2.');
+    if ($type == 'last') {
+      $this->assertEquals(array_map($this->valueCallback, $expected[1]), $items[$this->itemIds[1]]->getField($this->fieldId)->getValues(), 'Correct aggregation for item 1.');
+    }
+    else {
+      $this->assertEquals(array_map($this->valueCallback, $expected[0]), $items[$this->itemIds[0]]->getField($this->fieldId)->getValues(), 'Correct aggregation for item 1.');
+      $this->assertEquals(array_map($this->valueCallback, $expected[1]), $items[$this->itemIds[1]]->getField($this->fieldId)->getValues(), 'Correct aggregation for item 2.');
+    }
   }
 
   /**
@@ -249,6 +254,13 @@ class AggregatedFieldsTest extends UnitTestCase {
           array('foobar'),
         ),
       ),
+      '"Last" aggregation' => array(
+        'last',
+        array(
+          array('foo'),
+          array('foobar'),
+        ),
+      ),
     );
   }
 
