Subtlety: ~root/a should expand to /a, not //a.  Everything else unchanged.
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index c288f3b..d284834 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -241,6 +241,7 @@
 		except KeyError:
 			return path
 		userhome = pwent[5]
+	if userhome[-1:] == '/': i = i+1
 	return userhome + path[i:]