diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index b436d9f571..143b00e623 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -324,7 +324,17 @@
if(href_list["write"])
var/id = href_list["write"]
//var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as message
- var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, MAX_PAPER_MESSAGE_LEN, extra = 0)
+
+ var/textlimit = MAX_PAPER_MESSAGE_LEN - length(info)
+ if(textlimit <= 0)
+ usr << "There isn't enough space left on \the [src] to write anything."
+ return
+
+ var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, textlimit, extra = 0)
+
+ if(!t)
+ return
+
var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen.
var/iscrayon = 0
if(!istype(i, /obj/item/weapon/pen))
@@ -347,6 +357,9 @@
message_admins("PAPER: [usr] ([usr.ckey]) tried to use forbidden word in [src]: [bad].")
return
*/
+
+ var last_fields_value = fields
+
//t = html_encode(t)
t = replacetext(t, "\n", "
")
t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html
@@ -354,6 +367,7 @@
if(fields > 50)//large amount of fields creates a heavy load on the server, see updateinfolinks() and addtofield()
usr << "Too many fields. Sorry, you can't do this."
+ fields = last_fields_value
return
if(id!="end")