diff --git a/.orchestra/support/extract.sh b/.orchestra/support/extract.sh
index 33702e8b7a4d70461fefa337f07ea134ca1e2e78..efcda27141f1d251502d715883c57817f0cf61d2 100755
--- a/.orchestra/support/extract.sh
+++ b/.orchestra/support/extract.sh
@@ -40,10 +40,14 @@ if [ -z "${ARCHIVE_FILENAME}" ]; then
   ARCHIVE_FILENAME="$(basename "$URL")"
 fi
 
+TMP_ARCHIVE_FILENAME="${ARCHIVE_FILENAME}.tmp"
+trap 'rm ${SRC_ARCHIVE_DIR}/${TMP_ARCHIVE_FILENAME} || true' INT QUIT TERM EXIT
+
 if [ ! -e "${SRC_ARCHIVE_DIR}/${ARCHIVE_FILENAME}" ]; then
     echo "Downloading source archive to ${SRC_ARCHIVE_DIR}/${ARCHIVE_FILENAME}"
     mkdir -p "$SRC_ARCHIVE_DIR"
-    wget -O "${SRC_ARCHIVE_DIR}/${ARCHIVE_FILENAME}" "$URL"
+    wget -O "${SRC_ARCHIVE_DIR}/${TMP_ARCHIVE_FILENAME}" "$URL"
+    mv "${SRC_ARCHIVE_DIR}/${TMP_ARCHIVE_FILENAME}" "${SRC_ARCHIVE_DIR}/${ARCHIVE_FILENAME}"
 else
     echo "$URL already downloaded in ${SRC_ARCHIVE_DIR}/${ARCHIVE_FILENAME}"
 fi