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..fc33de4388840f0612a5a930e4ccfd5062f67258 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"]))
+    track_duration = request.duration(meta["filename"])
     if track_duration != -1 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..a4075ba40f9ff39f9c6e6a4246e3b37aa7529a1f 100755
--- a/tests/test_metadata_duration.liq
+++ b/tests/test_metadata_duration.liq
@@ -23,11 +23,11 @@ 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
 input_fs = single(id="fs", "assets/audio.mp3")