diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 5e628b6c952..9d046f0d985 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -270,9 +270,7 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
if(5)
dat += "
Upload a New Title
"
if(!scanner)
- for(var/obj/machinery/libraryscanner/S in range(9))
- scanner = S
- break
+ findscanner(9)
if(!scanner)
dat += "No scanner found within wireless network range.
"
else if(!scanner.cache)
@@ -288,6 +286,8 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
dat += "(Return to main menu)
"
if(6)
dat += "Post Title to Newscaster
"
+ if(!scanner)
+ scanner = findscanner(9)
if(!scanner)
dat += "No scanner found within wireless network range.
"
else if(!scanner.cache)
@@ -313,6 +313,11 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
+/obj/machinery/computer/libraryconsole/bookmanagement/proc/findscanner(viewrange)
+ for(var/obj/machinery/libraryscanner/S in range(viewrange))
+ return S
+ return null
+
/obj/machinery/computer/libraryconsole/bookmanagement/proc/print_forbidden_lore(mob/user)
var/spook = pick("blood", "brass")
var/turf/T = get_turf(src)