diff --git a/base/mp_deletefolder.sas b/base/mp_deletefolder.sas
new file mode 100644
index 0000000..5bdd04c
--- /dev/null
+++ b/base/mp_deletefolder.sas
@@ -0,0 +1,54 @@
+/**
+ @file
+ @brief A macro to delete a directory
+ @details Will delete all folder content (including subfolder content) and
+ finally, the folder itself.
+
+ @param path Unquoted path to the folder to delete.
+
+
SAS Macros
+ @li mp_dirlist.sas
+
+**/
+
+%macro mp_deletefolder(folder);
+ %let rc = %sysfunc(filename(fid,&folder));
+ %if &rc %then %do;
+ %put rc = &rc ;
+ %put %sysfunc(sysmsg());
+ %end;
+ %else %do;
+ %let rc = %sysfunc(fexist(&fid));
+ %if not &rc %then %put Folder does not exist. ;
+ %else %if &rc %then %do;
+ %mp_dirlist(path=&folder,outds=mp_dirlist);
+ %let dsid = %sysfunc(open(mp_dirlist));
+ %let nobs = %sysfunc(attrn(&dsid,nobs));
+ %let rc = %sysfunc(close(&dsid));
+ %if &nobs %then %do;
+ proc sort data=mp_dirlist;
+ by descending level;
+ run;
+ data _null_;
+ set mp_dirlist;
+ rc=filename('delfile',filepath);
+ rc=fdelete('delfile');
+ if rc then do;
+ put 'rc = ' rc;
+ filepath=trim(filepath);
+ put 'Delete of ' filepath 'failed.';
+ end;
+ run;
+ /* tidy up */
+ proc sql;
+ drop table mp_dirlist;
+ quit;
+ %end;
+ %let rc=%sysfunc(fdelete(&fid));
+ %if &rc %then %do;
+ %put rc = &rc;
+ %put %sysfunc(sysmsg());
+ %end;
+ %end;
+ %end;
+%mend mp_deletefolder;
\ No newline at end of file