Fix CRLF lines
diff --git a/pre_commit_hooks/end_of_file_fixer.py b/pre_commit_hooks/end_of_file_fixer.py
index 4fe82b7..9b94ab3 100644
--- a/pre_commit_hooks/end_of_file_fixer.py
+++ b/pre_commit_hooks/end_of_file_fixer.py
@@ -21,7 +21,7 @@
         file_obj.write(b'\n')
         return 1
 
-    while last_character == b'\n':
+    while last_character == b'\n' or last_character == b'\r':
         # Deal with the beginning of the file
         if file_obj.tell() == 1:
             # If we've reached the beginning of the file and it is all
@@ -39,8 +39,9 @@
     # there are extraneous newlines at the ned of the file.  Then backtrack and
     # trim the end off.
     if len(file_obj.read(2)) == 2:
-        file_obj.seek(-1, os.SEEK_CUR)
+        file_obj.seek(-2, os.SEEK_CUR)
         file_obj.truncate()
+        file_obj.write(b'\n')
         return 1
 
     return 0
diff --git a/tests/end_of_file_fixer_test.py b/tests/end_of_file_fixer_test.py
index ae899d2..0766636 100644
--- a/tests/end_of_file_fixer_test.py
+++ b/tests/end_of_file_fixer_test.py
@@ -15,6 +15,8 @@
     (b'foo', 1, b'foo\n'),
     (b'foo\n\n\n', 1, b'foo\n'),
     (b'\xe2\x98\x83', 1, b'\xe2\x98\x83\n'),
+    (b'foo\r\n', 1, b'foo\n'),
+    (b'foo\r\n\r\n', 1, b'foo\n'),
 )