diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
index d91e8a9d53bb68901a969790775a9aef15105f45..d0cb2d6dc85412b23cc3e18a95bec84baa6f3c29 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
@@ -298,7 +298,7 @@ void GridGenerator::allocArrays_BoundaryValues()
 
 
             //read second timestep of precursor into next and copy next to device
-            real nextTime = para->getParD(level)->precursorBC.nTRead*pow(2,-level)*para->getTimeRatio();
+            real nextTime = para->getParD(level)->precursorBC.nTRead*pow(2,-((real)level))*para->getTimeRatio();
             for(auto reader : para->getParH(level)->velocityReader)
             {   
                 reader->getNextVelocities(para->getParH(level)->precursorBC.vxNext, para->getParH(level)->precursorBC.vyNext, para->getParH(level)->precursorBC.vzNext, nextTime);
@@ -322,7 +322,7 @@ void GridGenerator::allocArrays_BoundaryValues()
 
             //start usual cycle of loading, i.e. read velocities of timestep after current and copy asynchronously to device
 
-            nextTime = 2*para->getParD(level)->precursorBC.nTRead*pow(2,-level)*para->getTimeRatio();
+            nextTime = 2*para->getParD(level)->precursorBC.nTRead*pow(2,-((real)level))*para->getTimeRatio();
 
             for(auto reader : para->getParH(level)->velocityReader)
             {