diff --git a/xs/src/libslic3r/GCode.cpp b/xs/src/libslic3r/GCode.cpp
index c57f6a675..88020246b 100644
--- a/xs/src/libslic3r/GCode.cpp
+++ b/xs/src/libslic3r/GCode.cpp
@@ -198,7 +198,7 @@ Wipe::wipe(GCode &gcodegen, bool toolchange)
 
 GCode::GCode()
     : placeholder_parser(NULL), enable_loop_clipping(true), enable_cooling_markers(false), layer_count(0),
-        layer_index(-1), layer(NULL), first_layer(false), elapsed_time(0), volumetric_speed(0),
+        layer_index(-1), layer(NULL), first_layer(false), elapsed_time(0.0), volumetric_speed(0),
         _last_pos_defined(false)
 {
 }
diff --git a/xs/src/libslic3r/GCode.hpp b/xs/src/libslic3r/GCode.hpp
index 7aa0143a3..ebeb50e78 100644
--- a/xs/src/libslic3r/GCode.hpp
+++ b/xs/src/libslic3r/GCode.hpp
@@ -82,7 +82,7 @@ class GCode {
     const Layer* layer;
     std::map<const PrintObject*,Point> _seam_position;
     bool first_layer; // this flag triggers first layer speeds
-    unsigned int elapsed_time; // seconds
+    float elapsed_time; // seconds
     double volumetric_speed;
     
     GCode();
diff --git a/xs/xsp/GCode.xsp b/xs/xsp/GCode.xsp
index 5bc1bf84f..7f17a3a12 100644
--- a/xs/xsp/GCode.xsp
+++ b/xs/xsp/GCode.xsp
@@ -129,9 +129,9 @@
     void set_first_layer(bool value)
         %code{% THIS->first_layer = value; %};
     
-    unsigned int elapsed_time()
+    float elapsed_time()
         %code{% RETVAL = THIS->elapsed_time; %};
-    void set_elapsed_time(unsigned int value)
+    void set_elapsed_time(float value)
         %code{% THIS->elapsed_time = value; %};
     
     bool last_pos_defined();