diff --git a/src/language/utils/SymbolTable.hpp b/src/language/utils/SymbolTable.hpp
index 38351f7ecdf568e3482b1561152ae5a07276182f..658c3a2be2ab232408066a17f68ebbf00aded70d 100644
--- a/src/language/utils/SymbolTable.hpp
+++ b/src/language/utils/SymbolTable.hpp
@@ -314,7 +314,7 @@ class SymbolTable
   }
 
   std::vector<Symbol>
-  getBuiltinFunctionSymbolList(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position)
+  getBuiltinFunctionSymbolList(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position) const
   {
     std::vector<Symbol> builtin_function_symbol_list;
 
@@ -338,7 +338,7 @@ class SymbolTable
   }
 
   bool
-  has(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position)
+  has(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position) const
   {
     for (auto i_stored_symbol : m_symbol_list) {
       // Symbol must be defined before the call
diff --git a/src/utils/checkpointing/Checkpoint.cpp b/src/utils/checkpointing/Checkpoint.cpp
index 16ea2d830766d141cfb8c499e3454bdb581e5996..10c338fc4aeae1a1b0d7a593e17b3339c372f7d3 100644
--- a/src/utils/checkpointing/Checkpoint.cpp
+++ b/src/utils/checkpointing/Checkpoint.cpp
@@ -54,7 +54,8 @@ checkpoint()
         break;
       }
       default: {
-        if ((symbol.attributes().dataType() != ASTNodeDataType::builtin_function_t) and
+        if ((symbol_table.has(symbol.name(), ASTExecutionStack::getInstance().currentNode().begin())) and
+            (symbol.attributes().dataType() != ASTNodeDataType::builtin_function_t) and
             (not symbol.attributes().isModuleVariable())) {
           std::visit(
             [&](auto&& data) {