diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2f5822cead7676edd0826b473b38772c816f8629..d31092e3f86eeb0c91454f06f6d579e1a679d494 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Configuration: Renamed environment variable `AURA_ENGINE_SERVER_TIMEOUT` to `AURA_ENGINE_SERVER_TIMEOUT`
   and configuration setting `telnet_server_timeout` to `server_timeout`.
 - Configuration: Increase default value for `server_timeout`, to avoid malfunctions when idle (aura#165)
+- Use datatype float instead of int for `trackDuration` (#51)
 
 ### Fixed
 
diff --git a/src/functions.liq b/src/functions.liq
index 9e5203fe1423ddc34930445b91e95b7baac510c7..a54bb170a3f3a7dcbd5180ac84971727d7de6eec 100644
--- a/src/functions.liq
+++ b/src/functions.liq
@@ -98,7 +98,7 @@ def build_metadata(json_string) =
             playlist_item: string,
             track_type: int,
             track_start: string?,
-            track_duration: int?,
+            track_duration: float?,
             track_title: string?,
             track_album: string?,
             track_artist: string?
@@ -123,13 +123,13 @@ end
 #   b.) as a fallback from the meta field "track_duration"
 #
 # Returns
-#   (int) duration in seconds
+#   (float) duration in seconds
 def get_meta_track_duration(meta) =
-    track_duration = int_of_float(request.duration(meta["filename"]))
-    if track_duration != -1 then
+    track_duration = request.duration(meta["filename"])
+    if track_duration != -1.0 then
         track_duration
     else
-        int_of_string(meta["track_duration"])
+        float_of_string(meta["track_duration"])
     end
 end
 
@@ -143,7 +143,7 @@ def post_playlog(api_url, data) =
     json_data.add("playlistId", int_of_string(list.assoc("playlist_id", data)))
     json_data.add("trackType", int_of_string(list.assoc("track_type", data)))
     json_data.add("trackStart", list.assoc("track_start", data))
-    json_data.add("trackDuration", int_of_string(list.assoc("track_duration", data)))
+    json_data.add("trackDuration", float_of_string(list.assoc("track_duration", data)))
     json_data.add("trackTitle", list.assoc("track_title", data))
     json_data.add("trackAlbum", list.assoc("track_album", data))
     json_data.add("trackArtist", list.assoc("track_artist", data))
diff --git a/src/in_soundcard.liq b/src/in_soundcard.liq
index 94c8b3113ac5d010fc4b8023b154a24ed5500c26..508e3a103957aac25dc194f34a6c19d7e0071d06 100644
--- a/src/in_soundcard.liq
+++ b/src/in_soundcard.liq
@@ -33,7 +33,7 @@ usage_set_track_metadata = "set_track_metadata { \
         \"playlist_item\": \"\", \
         \"track_type\": 2, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 808, \
+        \"track_duration\": 808.8, \
         \"track_title\": \"Lorem Ipsum\", \
         \"track_album\": \"\", \
         \"track_artist\": \"\" \
diff --git a/src/in_stream.liq b/src/in_stream.liq
index 207b21e3ff64bf199ec9a357899dd49c0103be3c..9bccbbb21b05a09ee5b7c93e17f2e88b5ea8e3e7 100644
--- a/src/in_stream.liq
+++ b/src/in_stream.liq
@@ -91,7 +91,7 @@ usage_set_track_metadata = "set_track_metadata { \
         \"playlist_item\": \"\", \
         \"track_type\": 1, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 303, \
+        \"track_duration\": 303.3, \
         \"track_title\": \"Bar\", \
         \"track_album\": \"\", \
         \"track_artist\": \"Foo\" \
diff --git a/tests/test_metadata_build.liq b/tests/test_metadata_build.liq
index e481242c17cee7eb3f61d63d7b4fc48f8efb3421..e94e7806bc1bc0e99908624fa6c3bd11c80c21b0 100755
--- a/tests/test_metadata_build.liq
+++ b/tests/test_metadata_build.liq
@@ -30,7 +30,7 @@ json_string = "{ \
         \"playlist_item\": \"\", \
         \"track_type\": 0, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 303, \
+        \"track_duration\": 303.3, \
         \"track_title\": \"FooBar 2000\", \
         \"track_album\": \"\", \
         \"track_artist\": \"\" \
diff --git a/tests/test_metadata_duration.liq b/tests/test_metadata_duration.liq
index 0caa269dcf6ecaff6ef99335057d2323a807447d..7a439425eda9fe3f950f43b3562a5797edd962ad 100755
--- a/tests/test_metadata_duration.liq
+++ b/tests/test_metadata_duration.liq
@@ -23,18 +23,18 @@ settings.frame.audio.samplerate.set(44100)
 
 %include "../src/functions.liq"
 
-# Read duration from metadata field => 808
-metadata = [( "track_duration", "808" )]
+# Read duration from metadata field => 808.8
+metadata = [( "track_duration", "808.8" )]
 duration = get_meta_track_duration(metadata)
 print("Track duration in meta 'track_duration': #{duration}")
-assertEquals(duration, 808)
+assertEquals(duration, 808.8)
 
-# Read duration from file => 207
+# Read duration from file => 207.0
 input_fs = single(id="fs", "assets/audio.mp3")
 def process(metadata) =
     duration = get_meta_track_duration(metadata)
     print("Track duration on file: #{duration}")
-    assertEquals(duration, 207)
+    assertEquals(duration, 207.0)
     shutdown(code=0)
 end
 input_fs.on_metadata(process)