diff --git a/base64.c b/base64.c
index 7124060e9236707f7fc22ec400e3fe0a6e8776fe..566cd30b10e291610c001a39ad1aea786e127dfb 100644
--- a/base64.c
+++ b/base64.c
@@ -71,27 +71,24 @@ base64_encode(uint8_t *dst,
 
   if (left_over)
     {
+      in -= left_over;
+      *--out = '=';
       switch(left_over)
 	{
 	case 1:
-	  in--;
-	  *--out = '=';
 	  *--out = '=';
 	  *--out = ENCODE(in[0] << 4);
-	  *--out = ENCODE(in[0] >> 2);
 	  break;
 	  
 	case 2:
-	  in-= 2;
-	  *--out = '=';
 	  *--out = ENCODE( in[1] << 2);
 	  *--out = ENCODE((in[0] << 4) | (in[1] >> 4));
-	  *--out = ENCODE( in[0] >> 2);
 	  break;
 
 	default:
 	  abort();
 	}
+      *--out = ENCODE(in[0] >> 2);
     }
   
   while (in > src)