diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c
index fd842f0431e1f11ef228dae59978683ae83cf2d1..934cb9d92d69f5f058dd21cfc85dae172bb25b6a 100644
--- a/src/sbbs3/js_internal.c
+++ b/src/sbbs3/js_internal.c
@@ -416,8 +416,18 @@ js_execfile(JSContext *cx, uintN argc, jsval *arglist)
 					path[0] = 0;
 				JS_RESUMEREQUEST(cx, rc);
 			}
-			if (*path == '\0')
-				SAFECOPY(path, cmd);
+			if (*path == '\0') {
+				if (gptp->cfg->mods_dir[0] != '\0') {
+					snprintf(path, sizeof path, "%s%s", gptp->cfg->mods_dir, cmd);
+					if (!fexistcase(path))
+						*path = '\0';
+				}
+				if (*path == '\0') {
+					snprintf(path, sizeof path, "%s%s", gptp->cfg->exec_dir, cmd);
+					if (!fexistcase(path))
+						SAFECOPY(path, cmd);
+				}
+			}
 		}
 	}
 	free(cmd);