diff --git a/CHANGELOG.md b/CHANGELOG.md
index c8f6eb02f..4d484dde2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@
 
 ### Bug Fixes and Other Changes
 
+* Keywords appearing in header (named expressions) keep original case.
+
 ## v0.7.0
 
 ### Major Features and Improvements
diff --git a/src/query/frontend/stripped.cpp b/src/query/frontend/stripped.cpp
index 5158f2a26..154e3a628 100644
--- a/src/query/frontend/stripped.cpp
+++ b/src/query/frontend/stripped.cpp
@@ -70,6 +70,9 @@ StrippedQuery::StrippedQuery(const std::string &query) : original_(query) {
     token_strings.push_back(new_value);
   };
 
+  // Copy original tokens because we need to use original case in named
+  // expressions and keywords in tokens will be lowercased in the next loop.
+  auto original_tokens = tokens;
   // For every token in original query remember token index in stripped query.
   std::vector<int> position_mapping(tokens.size(), -1);
 
@@ -192,9 +195,13 @@ StrippedQuery::StrippedQuery(const std::string &query) : original_(query) {
     }
     if (!has_as) {
       // Named expression is not aliased. Save string disregarding leading and
-      // trailing whitespaces.
+      // trailing whitespaces. Use original_tokens in which case of the keywords
+      // is not lowercased.
       std::string s;
-      for (auto kt = it; kt != last_non_space + 1; ++kt) {
+      auto begin_token = it - tokens.begin() + original_tokens.begin();
+      auto end_token =
+          last_non_space - tokens.begin() + original_tokens.begin() + 1;
+      for (auto kt = begin_token; kt != end_token; ++kt) {
         s += kt->second;
       }
       named_exprs_[position_mapping[it - tokens.begin()]] = s;
diff --git a/tests/unit/stripped.cpp b/tests/unit/stripped.cpp
index 1ce59ae6b..a914bcab0 100644
--- a/tests/unit/stripped.cpp
+++ b/tests/unit/stripped.cpp
@@ -299,4 +299,12 @@ TEST(QueryStripper, Parameters) {
               UnorderedElementsAre(Pair(2, "$123"), Pair(7, "$pero"),
                                    Pair(12, "$`mirko ``slavko`")));
 }
+
+TEST(QueryStripper, KeywordInNamedExpression) {
+  StrippedQuery stripped("RETURN CoUnT(n)");
+  EXPECT_EQ(stripped.literals().size(), 0);
+  EXPECT_EQ(stripped.query(), "return count ( n )");
+  EXPECT_THAT(stripped.named_expressions(),
+              UnorderedElementsAre(Pair(2, "CoUnT(n)")));
+}
 }