diff --git a/scapy/packet.py b/scapy/packet.py
index 6c2094f27b2000de5923ffe0ec19e351f79de8da..01dac646ab1744c78b5bc9d87c511537b759e4b0 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -634,10 +634,10 @@ Creates an EPS file describing a packet. If filename is not provided a temporary
         pkt.underlayer = self.underlayer
         pkt.overload_fields = self.overload_fields.copy()
         pkt.post_transforms = self.post_transforms
+        pkt.raw_packet_cache = self.raw_packet_cache
         if payload is not None:
             pkt.add_payload(payload)
         return pkt
-        
 
     def __iter__(self):
         def loop(todo, done, self=self):
@@ -666,7 +666,7 @@ Creates an EPS file describing a packet. If filename is not provided a temporary
                     pkt = self.clone_with(payload=payl, **done2)
                     yield pkt
 
-        if self.explicit:
+        if self.explicit or self.raw_packet_cache is not None:
             todo = []
             done = self.fields
         else:
diff --git a/scapy/utils.py b/scapy/utils.py
index c5ac2520724de2e893b4cc656e71ec463c9d45aa..07b00ab4e877f86c1693e3de390af24632300510 100644
--- a/scapy/utils.py
+++ b/scapy/utils.py
@@ -646,8 +646,9 @@ class RawPcapWriter:
     
 
     def write(self, pkt):
-        """accepts a either a single packet or a list of packets
-        to be written to the dumpfile
+        """accepts either a single packet or a list of packets to be
+        written to the dumpfile
+
         """
         if not self.header_present:
             self._write_header(pkt)
@@ -700,7 +701,7 @@ class PcapWriter(RawPcapWriter):
                 self.linktype = 1
         RawPcapWriter._write_header(self, pkt)
 
-    def _write_packet(self, packet):        
+    def _write_packet(self, packet):
         sec = int(packet.time)
         usec = int(round((packet.time-sec)*1000000))
         s = str(packet)