diff --git a/vector.lua b/vector.lua
index c376601..7274ac3 100644
--- a/vector.lua
+++ b/vector.lua
@@ -162,6 +162,19 @@ function normalize(v)
 	return divide_scalar(v, length(v))
 end
 
+function normalize_zero(v)
+	local len = length(v)
+	if len == 0 then
+		-- Return a zeroed vector with the same keys
+		local zeroed = {}
+		for k in pairs(v) do
+			zeroed[k] = 0
+		end
+		return new(zeroed)
+	end
+	return divide_scalar(v, len)
+end
+
 function floor(v)
 	return apply(v, math.floor)
 end