diff --git a/FileIO/Legacy/OGSIOVer4.cpp b/FileIO/Legacy/OGSIOVer4.cpp
index d7de162b91c5b0f22201dc11ba28545ccbd4c86f..39fafc11b7d840da4bfb4156778656dee9c48af8 100644
--- a/FileIO/Legacy/OGSIOVer4.cpp
+++ b/FileIO/Legacy/OGSIOVer4.cpp
@@ -616,6 +616,42 @@ void writeGLIFileV4 (const std::string& fname,
 			}
 	}
 
+	// writing surfaces as TIN files
+	const std::string path = BaseLib::extractPath(fname);
+	std::size_t sfcs_cnt (0);
+	const GeoLib::SurfaceVec* sfcs_vec (geo.getSurfaceVecObj (geo_name]));
+	if (sfcs_vec) {
+		const std::vector<GeoLib::Surface*>* sfcs (sfcs_vec->getVector());
+		for (std::size_t k(0); k < sfcs->size(); k++)
+		{
+			os << "#SURFACE" << "\n";
+			std::string sfc_name;
+			if (sfcs_vec->getNameOfElementByID (sfcs_cnt, sfc_name)) {
+				os << "\t$NAME " << "\n" << "\t\t" << sfc_name << "\n";
+			} else {
+				os << "\t$NAME " << "\n" << "\t\t" << sfcs_cnt << "\n";
+				sfc_name = std::to_string (sfcs_cnt);
+			}
+			sfc_name += ".tin";
+			os << "\t$TIN" << "\n";
+			os << "\t\t" << sfc_name << "\n";
+			// create tin file
+			sfc_name = path + sfc_name;
+			std::ofstream tin_os (sfc_name.c_str());
+			GeoLib::Surface const& sfc (*(*sfcs)[k]);
+			const std::size_t n_tris (sfc.getNTriangles());
+			for (std::size_t l(0); l < n_tris; l++) {
+				GeoLib::Triangle const& tri (*(sfc[l]));
+			tin_os << l << " " << *(tri.getPoint(0)) << " " <<
+			*(tri.getPoint(1)) << " " << *(tri.getPoint(2)) <<
+			"\n";
+			}
+			tin_os.close();
+
+			sfcs_cnt++;
+		}
+	}
+
 	os << "#STOP" << "\n";
 	os.close ();
 }