--- icu4c/source/common/putil.cpp
+++ icu4c/source/common/putil.cpp
@@ -157,6 +157,12 @@
 #   define HAVE_GETTIMEOFDAY 0
 #endif
 
+#ifdef BAZEL_CURRENT_REPOSITORY
+#include "rules_cc/cc/runfiles/runfiles.h"
+using rules_cc::cc::runfiles::Runfiles;
+#include <iostream>
+#endif
+
 U_NAMESPACE_USE
 
 /* Define the extension for data files, again... */
@@ -1487,6 +1493,12 @@ static void U_CALLCONV dataDirectoryInitFn() {
     }
 #endif
 
+#if defined(BAZEL_CURRENT_REPOSITORY) && defined(ICU_DATA_DIR_BAZEL)
+    std::unique_ptr<Runfiles> runfiles(Runfiles::Create("", BAZEL_CURRENT_REPOSITORY));
+    std::string dat_path = runfiles->Rlocation(ICU_DATA_DIR_BAZEL);
+    path = dat_path.c_str();
+#endif
+
     if(path==nullptr) {
         /* It looks really bad, set it to something. */
         path = "";
