diff --git a/imgsrc/srv/star-half.svg b/imgsrc/srv/star-half.svg
new file mode 100644
index 0000000000..ee5367f15e
--- /dev/null
+++ b/imgsrc/srv/star-half.svg
@@ -0,0 +1,5 @@
+
diff --git a/imgsrc/srv/star.svg b/imgsrc/srv/star.svg
index e550b36575..ae33706ad7 100644
--- a/imgsrc/srv/star.svg
+++ b/imgsrc/srv/star.svg
@@ -1 +1,5 @@
-
\ No newline at end of file
+
diff --git a/src/pyj/book_list/book_details.pyj b/src/pyj/book_list/book_details.pyj
index c35c8e7091..b02c7cb49e 100644
--- a/src/pyj/book_list/book_details.pyj
+++ b/src/pyj/book_list/book_details.pyj
@@ -144,8 +144,11 @@ def render_metadata(mi, interface_data, table, field_list=None):
def process_rating(field, fm, name, val):
stars = E.span()
- for i in range(int(val) // 2):
+ val = int(val)
+ for i in range(val // 2):
stars.appendChild(svgicon('star'))
+ if fm.display.allow_half_stars and (val % 2):
+ stars.appendChild(svgicon('star-half'))
add_row(name, stars)
def process_identifiers(field, fm, name, val):