diff --git a/packages/sda/package.py b/packages/sda/package.py
index b9c9a1981f7b94267158c85732fc23e8f72f2eb8..de6e3bace4522da2783f785ca5e45defdd701c0b 100644
--- a/packages/sda/package.py
+++ b/packages/sda/package.py
@@ -32,6 +32,8 @@ class Sda(MakefilePackage):
     conflicts('%gcc@:9.3', when='@7.3.3d')
     conflicts('%intel')
 
+    patch('sda-7.3.3d.patch', when='@7.3.3d')
+
     build_directory = 'src'
     build_jobs = 1
 
diff --git a/packages/sda/sda-7.3.3d.patch b/packages/sda/sda-7.3.3d.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b6332398f7d76e49d9679088cb2f139d53aeda63
--- /dev/null
+++ b/packages/sda/sda-7.3.3d.patch
@@ -0,0 +1,56 @@
+diff --color -pur sda_flex-7.3.3d_orig/dtgrid/tools/dtgrid2UHBD.cpp sda_flex-7.3.3d/dtgrid/tools/dtgrid2UHBD.cpp
+--- sda_flex-7.3.3d_orig/dtgrid/tools/dtgrid2UHBD.cpp	2023-07-20 11:25:04.702987370 +0200
++++ sda_flex-7.3.3d/dtgrid/tools/dtgrid2UHBD.cpp	2023-07-20 11:26:35.851693745 +0200
+@@ -69,9 +69,7 @@ void write_uhbd_binary_header(FILE * out
+ }
+ 
+ /*void print_slice_grid(DTGrid3D <float,int> * dtGrid, int k){
+-	std::string slice_n, out_name;
+-	slice_n = static_cast<std::ostringstream*>( &(std::ostringstream() << k) )->str();
+-	out_name = "exclusion" + slice_n + "slice_dt.txt";
++	std::string out_name = "exclusion" + std::to_string(k) + "slice_dt.txt";
+ 
+ 	std::ofstream excl_slice;
+ 	excl_slice.open (out_name.c_str(), std::ios::out);
+diff --color -pur sda_flex-7.3.3d_orig/dtgrid/tools/UHBDgrd.hpp sda_flex-7.3.3d/dtgrid/tools/UHBDgrd.hpp
+--- sda_flex-7.3.3d_orig/dtgrid/tools/UHBDgrd.hpp	2023-07-20 11:25:04.702987370 +0200
++++ sda_flex-7.3.3d/dtgrid/tools/UHBDgrd.hpp	2023-07-20 11:27:02.731900942 +0200
+@@ -291,9 +291,7 @@ UHBD<T1>::~UHBD()
+  */
+ template <typename T1>
+ void UHBD<T1>::print_slice_grid(int k){
+-	std::string slice_n, out_name;
+-	slice_n = static_cast<std::ostringstream*>( &(std::ostringstream() << k) )->str();
+-	out_name = "exclusion" + slice_n + "slice.txt";
++	std::string out_name = "exclusion" + std::to_string(k) + "slice.txt";
+ 
+ 	std::ofstream excl_slice;
+ 	excl_slice.open (out_name.c_str(), std::ios::out);
+diff --color -pur sda_flex-7.3.3d_orig/src/tools/DT-Grid/tools/dtgrid2UHBD.cpp sda_flex-7.3.3d/src/tools/DT-Grid/tools/dtgrid2UHBD.cpp
+--- sda_flex-7.3.3d_orig/src/tools/DT-Grid/tools/dtgrid2UHBD.cpp	2023-07-20 11:25:04.962989395 +0200
++++ sda_flex-7.3.3d/src/tools/DT-Grid/tools/dtgrid2UHBD.cpp	2023-07-20 11:27:30.508114563 +0200
+@@ -69,9 +69,7 @@ void write_uhbd_binary_header(FILE * out
+ }
+ 
+ /*void print_slice_grid(DTGrid3D <float,int> * dtGrid, int k){
+-	std::string slice_n, out_name;
+-	slice_n = static_cast<std::ostringstream*>( &(std::ostringstream() << k) )->str();
+-	out_name = "exclusion" + slice_n + "slice_dt.txt";
++	std::string out_name = "exclusion" + std::to_string(k) + "slice_dt.txt";
+ 
+ 	std::ofstream excl_slice;
+ 	excl_slice.open (out_name.c_str(), std::ios::out);
+diff --color -pur sda_flex-7.3.3d_orig/src/tools/DT-Grid/tools/UHBDgrd.hpp sda_flex-7.3.3d/src/tools/DT-Grid/tools/UHBDgrd.hpp
+--- sda_flex-7.3.3d_orig/src/tools/DT-Grid/tools/UHBDgrd.hpp	2023-07-20 11:25:04.962989395 +0200
++++ sda_flex-7.3.3d/src/tools/DT-Grid/tools/UHBDgrd.hpp	2023-07-20 11:28:08.516406125 +0200
+@@ -291,9 +291,7 @@ UHBD<T1>::~UHBD()
+  */
+ template <typename T1>
+ void UHBD<T1>::print_slice_grid(int k){
+-	std::string slice_n, out_name;
+-	slice_n = static_cast<std::ostringstream*>( &(std::ostringstream() << k) )->str();
+-	out_name = "exclusion" + slice_n + "slice.txt";
++	std::string out_name = "exclusion" + std::to_string(k) + "slice.txt";
+ 
+ 	std::ofstream excl_slice;
+ 	excl_slice.open (out_name.c_str(), std::ios::out);