diff --git a/include/__config b/include/__config
index f4dce07..cd748fd 100644
--- a/include/__config
+++ b/include/__config
@@ -1145,6 +1145,7 @@
       defined(__CloudABI__) || \
       defined(__sun__) || \
       defined(__MVS__) || \
+      defined(_AIX) || \
       (defined(__MINGW32__) && __has_include(<pthread.h>))
 #    define _LIBCPP_HAS_THREAD_API_PTHREAD
 #  elif defined(__Fuchsia__)
diff --git a/include/__support/ibm/xlocale.h b/include/__support/ibm/xlocale.h
index 563b465..ff14d2e 100644
--- a/include/__support/ibm/xlocale.h
+++ b/include/__support/ibm/xlocale.h
@@ -212,11 +212,13 @@
 
 // strftime_l() is defined by POSIX. However, AIX 7.1 and z/OS do not have it
 // implemented yet. z/OS retrieves it from the POSIX fallbacks.
+#if !defined(_AIX72)
 static inline
 size_t strftime_l(char *__s, size_t __size, const char *__fmt,
                   const struct tm *__tm, locale_t locale) {
   return __xstrftime(locale, __s, __size, __fmt, __tm);
 }
+#endif
 
 #elif defined(__MVS__)
 #include <wctype.h>
@@ -224,47 +226,79 @@
 #include <__support/xlocale/__posix_l_fallback.h>
 #endif // defined(__MVS__)
 
+namespace {
+
+struct __setAndRestore {
+  explicit __setAndRestore(locale_t locale) {
+    if (locale == (locale_t)0) {
+      __cloc = newlocale(LC_ALL_MASK, "C", /* base */ (locale_t)0);
+      __stored = uselocale(__cloc);
+    } else {
+      __stored = uselocale(locale);
+    }
+  }
+
+  ~__setAndRestore() {
+    uselocale(__stored);
+    if (__cloc)
+      freelocale(__cloc);
+  }
+
+private:
+  locale_t __stored = (locale_t)0;
+  locale_t __cloc = (locale_t)0;
+};
+
+} // namespace
+
 // The following are not POSIX routines.  These are quick-and-dirty hacks
 // to make things pretend to work
 static inline
 long long strtoll_l(const char *__nptr, char **__endptr,
     int __base, locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtoll(__nptr, __endptr, __base);
 }
 
 static inline
 long strtol_l(const char *__nptr, char **__endptr,
     int __base, locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtol(__nptr, __endptr, __base);
 }
 
 static inline
 double strtod_l(const char *__nptr, char **__endptr,
     locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtod(__nptr, __endptr);
 }
 
 static inline
 float strtof_l(const char *__nptr, char **__endptr,
     locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtof(__nptr, __endptr);
 }
 
 static inline
 long double strtold_l(const char *__nptr, char **__endptr,
     locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtold(__nptr, __endptr);
 }
 
 static inline
 unsigned long long strtoull_l(const char *__nptr, char **__endptr,
     int __base, locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtoull(__nptr, __endptr, __base);
 }
 
 static inline
 unsigned long strtoul_l(const char *__nptr, char **__endptr,
     int __base, locale_t locale) {
+  __setAndRestore __newloc(locale);
   return strtoul(__nptr, __endptr, __base);
 }
 
diff --git a/src/filesystem/filesystem_common.h b/src/filesystem/filesystem_common.h
index c2214d0..f7f9013 100644
--- a/src/filesystem/filesystem_common.h
+++ b/src/filesystem/filesystem_common.h
@@ -467,6 +467,15 @@
   TimeSpec TS = {st.st_atime, 0};
   return TS;
 }
+#elif defined(_AIX)
+inline TimeSpec extract_mtime(StatT const& st) {
+  TimeSpec TS = {st.st_mtime, st.st_mtime_n};
+  return TS;
+}
+inline TimeSpec extract_atime(StatT const& st) {
+  TimeSpec TS = {st.st_atime, st.st_atime_n};
+  return TS;
+}
 #else
 inline TimeSpec extract_mtime(StatT const& st) { return st.st_mtim; }
 inline TimeSpec extract_atime(StatT const& st) { return st.st_atim; }
