diff --git a/Lib/encodings/mbcs.py b/Lib/encodings/mbcs.py
index ccf08e3..baf46cb 100644
--- a/Lib/encodings/mbcs.py
+++ b/Lib/encodings/mbcs.py
@@ -15,39 +15,31 @@
 
 ### Codec APIs
 
-class Codec(codecs.Codec):
+encode = mbcs_encode
 
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = mbcs_encode
-    decode = mbcs_decode
+def decode(input, errors='strict'):
+    return mbcs_decode(input, errors, True)
 
 class IncrementalEncoder(codecs.IncrementalEncoder):
     def encode(self, input, final=False):
-        return mbcs_encode(input,self.errors)[0]
+        return mbcs_encode(input, self.errors)[0]
 
 class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    def _buffer_decode(self, input, errors, final):
-        return mbcs_decode(input,self.errors,final)
+    _buffer_decode = mbcs_decode
 
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
+class StreamWriter(codecs.StreamWriter):
+    encode = mbcs_encode
 
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-class StreamConverter(StreamWriter,StreamReader):
-
-    encode = codecs.mbcs_decode
-    decode = codecs.mbcs_encode
+class StreamReader(codecs.StreamReader):
+    decode = mbcs_decode
 
 ### encodings module API
 
 def getregentry():
     return codecs.CodecInfo(
         name='mbcs',
-        encode=Codec.encode,
-        decode=Codec.decode,
+        encode=encode,
+        decode=decode,
         incrementalencoder=IncrementalEncoder,
         incrementaldecoder=IncrementalDecoder,
         streamreader=StreamReader,
diff --git a/Misc/NEWS b/Misc/NEWS
index 13323f5..1923b4f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -64,6 +64,9 @@
 Library
 -------
 
+- Correction of patch #1455898: In the mbcs decoder, set final=False
+  for stream decoder, but final=True for the decode function.
+
 - os.urandom no longer masks unrelated exceptions like SystemExit or
   KeyboardInterrupt.
 
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c
index 6d384b7..405fd7a 100644
--- a/Modules/_codecsmodule.c
+++ b/Modules/_codecsmodule.c
@@ -481,7 +481,7 @@
     const char *data;
     Py_ssize_t size, consumed;
     const char *errors = NULL;
-    int final = 1;
+    int final = 0;
     PyObject *decoded;
 
     if (!PyArg_ParseTuple(args, "t#|zi:mbcs_decode",
