diff --git a/src/source.c b/src/source.c
index addb9bd..06c1600 100644
--- a/src/source.c
+++ b/src/source.c
@@ -602,8 +602,13 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild *
 
   for (i = 0; i < download_parts->count; i++) {
     int curl_rv     = 0;
+    int curl_alt_rv = 0;
     char *md5sum    = md5sum_parts->items[i];
     char *filename  = filename_from_url (download_parts->items[i]);
+    char sbosrc[39] = "http://slackware.uk/sbosrcarch/by-name";
+    char *alt_url   = NULL;
+    int r           = 0;
+    int alt_url_len = strlen (sb->location) + strlen (filename) + 41;
     FILE *f         = NULL;
     char md5sum_to_prove[SLAPT_MD5_STR_LEN];
     struct stat file_stat;
@@ -630,8 +635,20 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild *
       if (curl_rv == 0) {
         printf (gettext ("Done\n"));
       } else {
-        printf (gettext ("Failed\n"));
-        exit (EXIT_FAILURE);
+        printf ("#...");
+        alt_url = slapt_malloc (alt_url_len);
+        r = snprintf(alt_url, alt_url_len, "%s/%s/%s", sbosrc, sb->location, filename);
+        if (r+1 != alt_url_len) {
+          printf (gettext("Failed to construct URL string\n"));
+          exit (EXIT_FAILURE);
+        }
+        curl_alt_rv = slapt_download_data (f, alt_url, file_size, NULL, slapt_config);
+        if (curl_alt_rv == 0) {
+          printf (gettext ("Done\n"));
+        } else {
+          printf (gettext ("Failed\n"));
+          exit (EXIT_FAILURE);
+        }
       }
 
       /* verify checksum of downloaded file */
@@ -645,6 +662,7 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild *
 
     fclose (f);
     free (filename);
+    free (alt_url);
   }
 
   if (download_parts != NULL)
