diff --git a/metis_l2_prep_vl_generic.pro b/metis_l2_prep_vl_generic.pro
index 932a131225c39455dfdc9d3cc6ea7db21317ec53..ceb69c96bb7913c2ac9af249adebb34c571dccac 100644
--- a/metis_l2_prep_vl_generic.pro
+++ b/metis_l2_prep_vl_generic.pro
@@ -158,6 +158,32 @@ pro metis_l2_prep_vl_generic
 
 	sxdelpar, primary_header, 'BLANK'
 	
+	; read the calibration curve to convert pmp raw voltages (dacpol) into effective polarization angles
+
+	dacpol_cal = cal_pack.vl_channel.dacpol_cal
+
+	if header.pol_id ne 5 then begin
+		if fix(header.hdr_vers) le 4 then begin
+			case header.pol_id of
+				0: dacpol = header.dac1pol1
+				1: dacpol = header.dac1pol1
+				2: dacpol = header.dac1pol2
+				3: dacpol = header.dac1pol3
+				4: dacpol = header.dac1pol4
+			endcase
+		endif
+
+		if fix(header.hdr_vers) ge 5 then begin
+			dacpol = header.dac1pol1
+		endif
+
+		k = where(dacpol_cal.dacpol eq dacpol)
+		angle = dacpol_cal.angle[k]
+		angle = float(angle[0])
+
+		fxaddpar, primary_header, 'POLANGLE', angle, '[deg] Polarization angle', after = 'POL_ID'
+	endif
+
 	; append wcs keywords
 
 	wcs = metis_wcs(header, cal_pack, ref_detector = ref_detector)