diff --git a/includes/environment.inc b/includes/environment.inc
index fc35de5..c35a4a0 100644
--- a/includes/environment.inc
+++ b/includes/environment.inc
@@ -640,6 +640,16 @@ function drush_is_mingw($os = NULL) {
   return _drush_test_os($os, array("MINGW"));
 }
 
+/**
+ * Check if the operating system is Mac OS.
+ * This will return TRUE under Darwin-based Mac OS
+ * and early Mac OS versions.
+ */
+function drush_is_mac() {
+  // As per https://github.com/pear/pear-core/blob/master/OS/Guess.php
+  return _drush_test_os(NULL, array("DARWIN","MAC"));
+}
+
 /*
  * Return tar executable name specific for the current OS
  */
diff --git a/includes/filesystem.inc b/includes/filesystem.inc
index 8f5e225..f5d8296 100644
--- a/includes/filesystem.inc
+++ b/includes/filesystem.inc
@@ -416,7 +416,7 @@ function drush_find_tmp() {
       $directories[] = sys_get_temp_dir();
     }
 
-    foreach ($directories as $directory) {
+    foreach (drush_is_windows() || drush_is_mac() ? $directories : array_reverse($directories) as $directory) {
       if (is_dir($directory) && is_writable($directory)) {
         $temporary_directory = $directory;
         break;
