diff --git a/Applications/FileIO/AsciiRasterInterface.cpp b/Applications/FileIO/AsciiRasterInterface.cpp
index 6c426a54bb0fd5ce8c0ab57cfc2bef89b06d26f5..0ccbff1fbdddffa3772dee0b5160fe7cd21f8742 100644
--- a/Applications/FileIO/AsciiRasterInterface.cpp
+++ b/Applications/FileIO/AsciiRasterInterface.cpp
@@ -247,20 +247,23 @@ void AsciiRasterInterface::writeRasterAsASC(GeoLib::Raster const& raster, std::s
     std::ofstream out(file_name);
     out << "ncols " << nCols << "\n";
     out << "nrows " << nRows << "\n";
+    auto const default_precision = out.precision();
+    out.precision(std::numeric_limits<double>::digits10);
     out << "xllcorner " << origin[0] << "\n";
     out << "yllcorner " << origin[1] << "\n";
     out << "cellsize " <<  header.cell_size << "\n";
+    out.precision(default_precision);
     out << "NODATA_value " << header.no_data << "\n";
 
     // write data
     double const*const elevation(raster.begin());
     for (unsigned row(0); row < nRows; ++row)
     {
-        for (unsigned col(0); col < nCols; ++col)
+        for (unsigned col(0); col < nCols-1; ++col)
         {
-            out << elevation[(nRows-row-1) * nCols + col] << " ";
+            out << elevation[(nRows - row - 1) * nCols + col] << " ";
         }
-        out << "\n";
+        out << elevation[(nRows - row) * nCols - 1] << "\n";
     }
     out.close();
 }