diff --git a/api/Specification.cpp b/api/Specification.cpp
index b36acae..a82fd1b 100644
--- a/api/Specification.cpp
+++ b/api/Specification.cpp
@@ -224,7 +224,20 @@
     return minVersion == 0 || minVersion <= maxApiLevel;
 }
 
-Definition::Definition(const std::string& name) : mName(name), mDeprecated(false), mHidden(false) {
+Definition::Definition(const std::string& name)
+    : mName(name), mDeprecated(false), mHidden(false), mFinalVersion(-1) {
+}
+
+void Definition::updateFinalVersion(const VersionInfo& info) {
+    /* We set it if:
+     * - We have never set mFinalVersion before, or
+     * - The max version is 0, which means we have not expired this API, or
+     * - We have a max that's later than what we currently have.
+     */
+    if (mFinalVersion < 0 || info.maxVersion == 0 ||
+        (mFinalVersion > 0 && info.maxVersion > mFinalVersion)) {
+        mFinalVersion = info.maxVersion;
+    }
 }
 
 void Definition::scanDocumentationTags(Scanner* scanner, bool firstOccurence,
@@ -323,6 +336,7 @@
     Constant* constant = systemSpecification.findOrCreateConstant(name, &created);
     ConstantSpecification* spec = new ConstantSpecification(constant);
     constant->addSpecification(spec);
+    constant->updateFinalVersion(info);
     specFile->addConstantSpecification(spec, created);
     spec->mVersionInfo = info;
 
@@ -348,6 +362,7 @@
     Type* type = systemSpecification.findOrCreateType(name, &created);
     TypeSpecification* spec = new TypeSpecification(type);
     type->addSpecification(spec);
+    type->updateFinalVersion(info);
     specFile->addTypeSpecification(spec, created);
     spec->mVersionInfo = info;
 
@@ -529,6 +544,7 @@
     Function* function = systemSpecification.findOrCreateFunction(name, &created);
     FunctionSpecification* spec = new FunctionSpecification(function);
     function->addSpecification(spec);
+    function->updateFinalVersion(info);
     specFile->addFunctionSpecification(spec, created);
 
     spec->mUnexpandedName = unexpandedName;
